Wordpress: Как интегрировать медиа-загрузчик с настраиваемым полем мета-поля? - PullRequest
0 голосов
/ 13 января 2012

Я пишу плагин, который создает собственный post_type с именем «dictionary_entry», который имеет несколько пользовательских мета-блоков и полей.Я хотел бы добавить поле добавления, которое позволит автору пользовательского сообщения загружать аудиоклип.

Я немного покопался и попробовал предложенный код здесь , но не могузаставить его работать.

Я думаю, что одним из возможных ответов на мой вопрос был бы параметр "type" для полей.Я видел "текст", "текстовое поле", "время", "цвет", "радио" и т. Д., Но я не смог найти список всех возможностей.Желательно ли думать, что может быть тип поля: «file» или «upload»?

Я собираюсь пропустить код для добавления пользовательского post_type, но вот пример моего кода для добавлениямета-блоки (если кто-то другой пытается это использовать, не забудьте использовать ваш собственный post_type в параметре 'pages'):

//meta box code

$meta_boxes = array();

$meta_boxes[] = array(
'id' => 'examples',                         // meta box         id, unique per meta box
'title' => 'Examples',          // meta box title
'pages' => array('dictionary_entry'),   // post types, accept custom post types as well, default is array('post'); optional
'context' => 'normal',                      // where the meta box appear: normal (default), advanced, side; optional
'priority' => 'high',                       // order of meta box: high (default), low; optional

'fields' => array(                          // list of meta fields

    array(
        'name' => 'Example 1',                  // field name
        'desc' => 'Use it in a sentence? EX: Kanien\'kéha kahrónkha.',  // field description, optional
        'id' => $prefix . 'example1',               // field id, i.e. the meta key
        'type' => 'text',                       // text box
        'std' => '',                    // default value, optional
        'validate_func' => 'check_apos'         // validate function, created below, inside RW_Meta_Box_Validate class
    ),

    array(
        'name' => 'Translation 1',                  // field name
        'desc' => 'What does the sentence mean? EX: I speak Mohawk.',   // field description, optional
        'id' => $prefix . 'ex_translation1',                // field id, i.e. the meta key
        'type' => 'text',                       // text box
        'std' => '',                    // default value, optional
        'validate_func' => 'check_apos'         // validate function, created below, inside RW_Meta_Box_Validate class
    )
)
);

foreach ($meta_boxes as $metabox) {
add_meta_box... //see the codex for add_meta_box()
}

1 Ответ

4 голосов
/ 16 января 2012

Я понял, как это сделать, покопавшись в найденном коде здесь . Если вы посмотрите, вы узнаете части моего кода, приведенного выше. Первоначально я использовал этот класс, но не полностью осознал это. Это пользовательский класс, который можно вызывать для добавления различных мета-блоков / полей.

Оказывается, что параметр "type", о котором я задумывался, на самом деле принадлежит этому классу (в отличие от Wordpress API) и что он допускает тип: 'file', который вызывает окно выбора файлов по умолчанию ( не встроенный медиа-загрузчик). Для моих целей это нормально, потому что мне не нужны все гладкие параметры.

Если вы читаете это, вы, вероятно, уже гуглили этот вопрос и видели множество постов, которые частично объясняют, как это сделать. Несмотря на это, я обнаружил, что это самый простой способ добавить эту функцию, которая ТАКЖЕ работает для пользовательских post_types (без изрядного количества взлома). Я надеюсь, что это полезно для кого-то еще.

...