A melhor maneira de abordar essa situação é via JavaScript. Dessa forma, sempre que o valor selecionado for alterado, você poderá ocultar / mostrar instantaneamente o metabox relacionado.
Use wp_enqueue_script()
em functions.php
para carregar um arquivo JavaScript personalizado na área de administração:
add_action('admin_enqueue_scripts', 'my_admin_script');
function my_admin_script()
{
wp_enqueue_script('my-admin', get_bloginfo('template_url').'/my-admin.js', array('jquery'));
}
O próprio script, que requer o jQuery, simplesmente oculta ou mostra um metabox com base no valor selecionado na lista suspensa do modelo de página. Neste exemplo, só mostro o metabox para postar miniaturas, caso o modelo de página padrão esteja selecionado:
(function($){
$(document).ready(function() {
var $page_template = $('#page_template')
,$metabox = $('#postimagediv'); // For example
$page_template.change(function() {
if ($(this).val() == 'default') {
$metabox.show();
} else {
$metabox.hide();
}
}).change();
});
})(jQuery);
E, apenas por diversão, aqui está uma versão mais curta e menos detalhada do mesmo script:
(function($){
$(function() {
$('#page_template').change(function() {
$('#postimagediv').toggle($(this).val() == 'default');
}).change();
});
})(jQuery);