Intereting Posts
register_activation_hook с включенным файлом Фильтр доступных шлюзов оплаты WooCommerce по роли get_parent_theme_file_path vs. get_template_directory Переадресация соединений WordPress на порт 8080 до 80 Что стоит использовать add_action, когда мы можем просто использовать add_filter? Выделите проблемы с комментариями автора Предварительно заполненное текстовое пространство по пользовательскому сообщению по умолчанию Пользовательские типы сообщений, пользовательские таксономии и постоянные ссылки? Скрыть несколько коротких кодов на сообщениях из внутренних Механизм отправки пользователям защищенного WordPress устанавливает новые уведомления по SMS или электронной почте? Сортировка таблицы списков типов сообщений по отображаемому имени идентификатора пользователя, хранящегося в качестве значения посылки Почему дизайн выглядит так сложно? Изменение имени пользователя? Администратор. Загрузите существующий шаблон администратора в качестве страницы подменю. Каков наилучший способ настройки среды разработки WordPress для фрилансеров с контролем версий?

Пользовательский мета-поле, отображаемое при выборе шаблона

Возможный дубликат:
Переключить административный обмен на основе выбранного шаблона страницы.

Можно ли изменить экран редактора сразу после того, как кто-то выберет какой-нибудь шаблон из раскрывающегося списка? Мне нужен метабокс, показанный только тогда, когда шаблон page-portfolio.phppage-portfolio.php . Я знаю, что могу использовать этот код:

$post_id = $_GET['post'] ? $_GET['post'] : $_POST['post_ID'] ;

$template_file = get_post_meta($post_id,'_wp_page_template',TRUE);

А чем добавлять мои ящики, используя инструкции if . Проблема в том, что она не работает сразу. Возможно ли это, даже без очень сложного кодирования, сделать «поймать» момент, когда пользователь изменяет список шаблонов без сохранения?

Solutions Collecting From Web of "Пользовательский мета-поле, отображаемое при выборе шаблона"

Я знаю, что плагин Advanced Custom Field делает это. Проверяя его код , я увидел, что он занимается этой проблемой с помощью jQuery. Используя это как ссылку, я думаю, что это должно сработать для вас:

 /* * Change Meta Box visibility according to Page Template * * Observation: this example swaps the Featured Image meta box visibility * * Usage: * - adjust $('#postimagediv') to your meta box * - change 'page-portfolio.php' to your template's filename * - remove the console.log outputs */ add_action('admin_head', 'wpse_50092_script_enqueuer'); function wpse_50092_script_enqueuer() { global $current_screen; if('page' != $current_screen->id) return; echo <<<HTML <script type="text/javascript"> jQuery(document).ready( function($) { /** * Adjust visibility of the meta box at startup */ if($('#page_template').val() == 'page-portfolio.php') { // show the meta box $('#postimagediv').show(); } else { // hide your meta box $('#postimagediv').hide(); } // Debug only // - outputs the template filename // - checking for console existance to avoid js errors in non-compliant browsers if (typeof console == "object") console.log ('default value = ' + $('#page_template').val()); /** * Live adjustment of the meta box visibility */ $('#page_template').live('change', function(){ if($(this).val() == 'page-portfolio.php') { // show the meta box $('#postimagediv').show(); } else { // hide your meta box $('#postimagediv').hide(); } // Debug only if (typeof console == "object") console.log ('live change value = ' + $(this).val()); }); }); </script> HTML; }