问题描述

只有当某个模板被分配到特定的 WordPress 页面时,我想要显示一个自定义字段界面。

有任何想法吗?

最佳解决方案

通过 JavaScript 来处理这种情况的最佳方式。这样,每当选定的值发生变化时,您可以立即隐藏/显示相关的 metabox 。

functions.php 中使用 wp_enqueue_script()在管理区域中加载自定义 JavaScript 文件:

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'));
}

需要 jQuery 的脚本本身根据页面模板下拉列表中选择的值简单地隐藏或显示一个 metabox 。在这个例子中,我只显示了标签缩略图的 metabox,以防选择了默认页面模板:

(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);

而且,只是为了好玩,这是一个更短,更少冗长的同一个脚本的版本:

(function($){
$(function() {

    $('#page_template').change(function() {
        $('#postimagediv').toggle($(this).val() == 'default');
    }).change();

});
})(jQuery);

参考文献

注:本文内容整合自 Google/Baidu/Bing 辅助翻译的英文资料结果。如果您对结果不满意,可以加入我们改善翻译效果:薇晓朵技术论坛。