web-dev-qa-db-fra.com

Personnalisation sur les modèles de page

Heyo,

est-il possible d'afficher différentes Customizersettings dans le Customizer API lorsque vous basculez entre deux pages et que chaque page a une Template différente?

Par exemple: Page-1 a le template Custom-Sidebar et Page-2 a le template Custom-Fullwidth. Maintenant, quand je vais dans Customizer et que je vois Page-1 je veux montrer Settings pour Sidebar et quand je passe à Page-2 je veux montrer Settings pour Images et autres ... mais pas pour la variable Sidebar! (Si ça a du sens)

Merci d'avance!

2
Pelle2010

L'API de personnalisation propose des méthodes active_callback à la fois sur les classes de contrôle et d . Fondamentalement, vous utilisez une fonction conditionnelle ou personnalisée pour déterminer si un contrôle ou une section est affiché à l'utilisateur.

Si vous souhaitez qu'une section apparaisse uniquement pour les pages, vous feriez quelque chose comme ceci:

$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',
) );

Ou peut-être une fonction personnalisée spécifique:

$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;
    }
}

Il y a quelques questions sur WPSE avec de bonnes réponses montrant des utilisations intéressantes de active_callback. Vérifiez celui-ci et celui-ci . Et il y a ce message avec un cas d'utilisation similaire au vôtre.

Je pourrais simplement les copier ici, mais j'estime que cela vaut la peine de jeter un coup d'œil à ces questions, réponses, commentaires et codes pour mieux comprendre.

3
Celso Bessa