web-dev-qa-db-ja.com

ページテンプレートに異なるカスタマイザ設定を表示する

ヘヨ、

2つのページを切り替えて各ページのCustomizersettingsが異なる場合、Customizer APIに異なるTemplateを表示することは可能ですか。

例えば、Page-1にはテンプレートCustom-Sidebarがあり、Page-2にはテンプレートCustom-Fullwidthがあります。 CustomizerにアクセスしてPage-1を表示するときはSettingsに対してSidebarを表示し、Page-2に変更するときはImagesおよびその他のものに対してSettingsを表示しますSidebarにはは付きません! (それが理にかなっている場合)

前もって感謝します!

2
Pelle2010

カスタマイザAPIは、 control とd section の両方のクラスでactive_callbackメソッドを提供しています。基本的には、コントロールまたはセクションがユーザーに表示されるかどうかを判断するために条件付き関数またはカスタム関数を使用します。

セクションをページ専用に表示したい場合は、次のようにします。

$wp_customize->add_section( 'wpse_283821_acme_pages', array(
    'title' => 'Acme Pages Section',
    'description' => 'Edit the ACME Pages Sections',
    'priority' => 20,
    'active_callback' => 'is_page',
) );

あるいは特定のカスタム関数:

$wp_customize->add_section( 'wpse_283821_acme_special_page', array(
    'title' => 'Acme Special Page Section',
    'description' => 'Edit the Specific ACME Page Section',
    'priority' => 20,
    'active_callback' => 'wpse_283821_acme_custom_callback',
) );

wpse_283821_acme_custom_callback() {
    // Do your logic here
    if ( true !== $condition ){
        return false;
    } else {
        return true;
    }
}

WPSEにはいくつか質問がありますが、active_callbackの興味深い使い方を示す良い答えがあります。 this one および this one を確認してください。そして この投稿 があなたのものと同じユースケースです。

それらをここにコピーすることもできますが、もっと深く理解するためには、それらの質問、答え、コメント、そしてコードを見てみる価値があると思います。

3
Celso Bessa