Intereting Posts
Как WordPress знает, где искать языковые файлы? Не удалось сохранить или обновить постмету для пользовательского типа сообщения посредством действия с помощью save_post hook «Опубликовать немедленно» с пользовательским статусом сообщения Создайте страницу пользовательского архива для персонализированного типа сообщения в плагине как перенаправить 301 из папки плагина Добавление возможностей супер админам Multisite: настройка темы и параметров при создании нового блога Как WordPress сообщает, какая почта находится на каком-либо сайте в многоуровневой настройке? meta_box или custom_field в качестве второго tinymce post-instance? Отображать контент из определенной категории Почему wp_reset_postdata () перезапускает цикл из первого сообщения? Как сделать Google JQuery Library Async или Defer? Добавление настраиваемых возможностей Правильное использование фигурных скобок против альтернативной синаксии Как оценивать сообщение с Admin Side / Manually?

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

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

Можно ли изменить экран редактора сразу после того, как кто-то выберет какой-нибудь шаблон из раскрывающегося списка? Мне нужен метабокс, показанный только тогда, когда шаблон 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; }