問題描述

只有當某個模板被分配到特定的 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 輔助翻譯的英文資料結果。如果您對結果不滿意,可以加入我們改善翻譯效果:薇曉朵技術論壇。