Прикреплять Метабокс Файлов


Кто-нибудь знает, как создать простую кнопку "прикрепить/просмотреть", которую можно поместить в метабокс, при нажатии на которую откроется лайтбокс, в котором пользователь сможет просмотреть все медиафайлы, отметьте те, которые он хочет прикрепить, и нажмите кнопку "прикрепить" внизу. После нажатия кнопки "прикрепить" метабокс сообщения обновится со всеми файлами, которые он выбрал...

Author: NetConstructor.com, 2010-11-19

2 answers

Что касается открытия лайтбокса, найдите что-нибудь, а затем выполните какое-либо действие внутри: в Wordpress это уже встроено. То, о чем вы просите, - это в основном толстая коробка, которая открывается, как в редакторе сообщений, когда вы просматриваете изображение в галерее.

Вы уже нашли весь код, который вам нужен для этого в wordpress. Единственное, что вам нужно сделать, это собрать довольно сложный фрагмент кода, упаковать его в отдельный плагин и изменить это соответствует вашим потребностям. Эти компоненты сами по себе не очень пригодны для повторного использования, поэтому нет API, который мог бы облегчить вам это. Ну, это не совсем так, вы можете использовать tb_show() для отображения толстого поля для примера .

Но в целом это не тривиально. Вы, вероятно, ищете что-то, что легче перенять. Я не знаю. Однажды я повозился с редактором сообщений thickbox (что может быть сложнее с тем, что вам нужно), и есть о чем подумать собираясь что-то делать. Но для описываемого вами сценария часто требуется, чтобы страница, открывающая толстый ящик, сигнализировала об обновлении чего-либо после того, как был сделан выбор во всплывающем окне.

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

 2
Author: hakre, 2017-04-13 12:37:38

Https://github.com/jaredatch/Custom-Metaboxes-and-Fields-for-WordPress

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

Это позволяет декалировать метабоксы для любого типа сообщений программно с точным контролем.

Поступил запрос на более подробную информацию. Рискуя дублировать знания, приведу пример из документация (с некоторыми модами для использования управления файлами). метабокс изображения:

function be_sample_metaboxes( $meta_boxes ) {
$prefix = '_cmb_'; // Prefix for all fields
$meta_boxes[] = array(
    'id' => 'test_metabox',
    'title' => 'Test Metabox',
    'pages' => array('page'), // post type
    'context' => 'normal',
    'priority' => 'high',
    'show_names' => true, // Show field names on the left
    'fields' => array(
        array(
            'name' => 'Test Text',
            'desc' => 'field description (optional)',
            'id' => $prefix . 'test_image',
            'type' => 'file'
        ),
    ),
);

return $meta_boxes;
}
add_filter( 'cmb_meta_boxes', 'be_sample_metaboxes' );


add_action( 'init', 'be_initialize_cmb_meta_boxes', 9999 );
function be_initialize_cmb_meta_boxes() {
if ( !class_exists( 'cmb_Meta_Box' ) ) {
    require_once( 'lib/metabox/init.php' );
}
}

Что я делаю, так это помещаю это в свой posttype_my_post_type_name.php где я создаю тип сообщения. Требовать этого от functions.php файл после того, как вам потребуется библиотека метабоксов.

 1
Author: Will, 2012-09-24 01:54:36