WordPress : Customizer Add Section argument ‘active_callback’ => « is_front_page » ne fonctionne pas

Publié par Jean-Michel le

Je travaille sur la configuration du personnalisateur pour mon thème. J’ai toutes les sections et tous les contrôles dont j’ai besoin, mais maintenant j’essaie de faire en sorte que certains d’entre eux ne s’affichent que sur certaines pages.

Mon premier arrêt concerne les sections qui ne concernent que la page d’accueil. J’ai lu ici que je peux ajouter un argument appelé « active_callback » à l’objet arguments et lui transmettre une fonction de vérification telle que is_front_pageou is_home.

Cela semblait facile, jusqu’à ce que je l’essaye et que cela ne fonctionne pas. J’ai essayé tout ce à quoi je pouvais penser (c’est ma première incursion dans WordPress), alors maintenant je viens vers vous en espérant que vous pourrez répondre à ma question

Je personnalise le personnalisateur functions.phpcomme tel:

add_action( 'customize_register', 'ablogs_theme_customizer' );
function ablogs_theme_customizer($wp_customize) {
     $wp_customize->add_section( 'home-page-slider-settings', array(                                             
           'title'          => "Slider Settings",
           'priority'       => 0,
           'active_callback' => 'is_front_page'
     ));
}

Si je supprime l’argument de rappel actif, il s’affiche très bien, mais sur chaque page lors de la personnalisation. J’ai vraiment besoin que cela n’apparaisse que sur la page d’accueil. Je n’utilise pas de page d’accueil statique. J’exécute un front-page.phpfichier personnalisé qui fait office de page d’accueil, donc je suppose que cela devrait compter à la fois front-pageet homelors de la vérification de ces valeurs, que j’ai essayées toutes les deux.

Quelqu’un peut-il m’aider ici

Solution n°1 trouvée

Remplacez votre code par ce code : POUR PLUS D’INFOS

add_action( 'customize_register', 'ablogs_theme_customizer' );
function ablogs_theme_customizer($wp_customize) {
     $wp_customize->add_section( 'home-page-slider-settings', array(                                             
           'title'          => "Slider Settings",
           'priority'       => 0,
           'active_callback'   => 'callback_single'
     ));
} 

function callback_single() { return is_home(); }

REMARQUE : Essayez simplement. le code n’est pas testé. j’espère que ça marche.

Solution n°2 trouvée

Le problème était que j’avais plusieurs boucles qui avaient chacune des requêtes différentes sur la première page. Après avoir pris soin de les réinitialiser à chaque fois, ce problème s’est résolu de lui-même.

Par exemple, ma nouvelle requête et boucle ressemble à ceci :

query_posts( array(
    'category_name'=>"Cloud, Customer Engagement, Developers, Executive Thought Leadership, Networking, Services, Solutions, Team Engagement",
    'showposts'=>8,
    'order'=>DESC
));

// Start the loop
if ( have_posts() ) : while ( have_posts() ) : the_post();

    echo '<div class="post-card-wrap">';

        // Get the card
        get_category_post_card($post);

    echo '</div>';

// End the loop
endwhile; endif;

// Reset the query
wp_reset_query();

Solution n°3 trouvée

Remplacez votre code par ce code : POUR PLUS D’INFOS

add_action( 'customize_register', 'ablogs_theme_customizer' );
function ablogs_theme_customizer($wp_customize) {
     $wp_customize->add_section( 'home-page-slider-settings', array(                                             
           'title'          => "Slider Settings",
           'priority'       => 0,
           'active_callback'   => 'callback_single'
     ));
} 

function callback_single() { return is_home(); }

REMARQUE : Essayez simplement. le code n’est pas testé. j’espère que ça marche.

Solution n°4 trouvée

Le problème était que j’avais plusieurs boucles qui avaient chacune des requêtes différentes sur la première page. Après avoir pris soin de les réinitialiser à chaque fois, ce problème s’est résolu de lui-même.

Par exemple, ma nouvelle requête et boucle ressemble à ceci :

query_posts( array(
    'category_name'=>"Cloud, Customer Engagement, Developers, Executive Thought Leadership, Networking, Services, Solutions, Team Engagement",
    'showposts'=>8,
    'order'=>DESC
));

// Start the loop
if ( have_posts() ) : while ( have_posts() ) : the_post();

    echo '<div class="post-card-wrap">';

        // Get the card
        get_category_post_card($post);

    echo '</div>';

// End the loop
endwhile; endif;

// Reset the query
wp_reset_query();

Catégories : Wordpress

Jean-Michel

Jean-Michel est en charge de la partie blog du site. Il met en place la stratégie de contenu et répond aux questions fréquentes sur Wordpress.

0 commentaire

Laisser un commentaire

Avatar placeholder

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *