web-dev-qa-db-fra.com

Exclure les pages de wp_list_pages

en un coup, je travaille sur un menu de navigation composé de pages et de sous-pages. Je ne l'ai pas codé, je ne suis donc pas tout à fait sûr de son fonctionnement, mais après avoir lu du code, il semble que le menu est généré par cette ligne dans le fichier navivation.php.

<?php wp_list_pages('title_li=&depth='.$bpt_navigation_depth.'&sort_column=menu_order'); ?>

Maintenant, je devais construire manuellement un autre menu. Je viens de créer une liste et d'insérer des liens vers les pages dont j'avais besoin, sans utiliser aucune fonction wordpress. Certains de ces liens sont également dans l'autre menu, je souhaite donc les supprimer de là. J'ai essayé de faire ceci:

<?php $args = array(
    'depth'        => 0,
    'show_date'    => '',
    'date_format'  => get_option('date_format'),
    'child_of'     => 0,
    'exclude'      => '17',
    'include'      => '',
    'title_li'     => __('Pages'),
    'echo'         => 1,
    'authors'      => '',
    'sort_column'  => 'menu_order, post_title',
    'link_before'  => '',
    'link_after'   => '',
    'walker'       => '',
    'post_type'    => 'page',
        'post_status'  => 'publish' 
); ?>


        <?php wp_list_pages($args); ?>

Mais ce qui se passe, c’est qu’il crée un menu avec un seul élément nommé "Pages", qui contient un sous-menu avec toutes les autres pages et, de toute façon, n’exclut pas la page 17.

1
Carlo

essayez de modifier votre code pour:

<?php wp_list_pages('title_li=&depth='.$bpt_navigation_depth.'&sort_column=menu_order&exclude=17'); ?> 
2
Michael

Je ne comprends pas tout à fait ce que vous essayez de faire car "Je devais créer manuellement un autre menu. Je viens de créer une liste et d’insérer des liens vers le pages dont j'avais besoin, sans utiliser aucune fonction WordPress. " n’a pas beaucoup de sens.

Vous devez exclure des pages en incluant le paramètre exclude dans votre fonction wp_list_pages.

Par exemple. (exemple: 'exclude = 3,7,31').

<?php wp_list_pages('title_li=&depth='.$bpt_navigation_depth.'&sort_column=menu_order&exclude=17'); ?>

Ceci mis à part en ce qui concerne le deuxième extrait de code, il n’est probablement pas nécessaire d’appeler chacun de ces paramètres, à moins que vous ne les utilisiez chacun.

Alors réduisez ces arguments au strict minimum de ce que vous devez accomplir.

<?php $args = array(
    'depth'        => 0,
    'exclude'      => '17',
    'sort_column'  => 'menu_order, post_title',
    'post_type'    => 'page',
    'post_status'  => 'publish' 
); ?>

<?php wp_list_pages($args); ?>

C’est suffisant pour vous lancer et vous pouvez ajouter ou supprimer des arguments selon vos besoins.

Si vous essayez de construire une liste de toutes les pages sauf celle où ID correspond à 17, l'extrait ci-dessus fonctionnera pour vous.

Laissez nous savoir!

2
userabuser