web-dev-qa-db-fra.com

wp_list_pages n'affichant pas cpt comme prévu

J'ai un CPT appelé 'postes vacants', voici le code qui l'enregistre:

function register_cpt_vacancy() {
    $args = array('labels' => $labels, 'hierarchical' => false, 'supports' => array('title', 'editor', 'excerpt', 'thumbnail', 'revisions'), 'taxonomies' => array('departments'), 'public' => true, 'show_ui' => true, 'show_in_menu' => true, 'menu_position' => 5, 'show_in_nav_menus' => true, 'publicly_queryable' => true, 'exclude_from_search' => false, 'has_archive' => true, 'query_var' => true, 'can_export' => true, 'rewrite' => true, 'capability_type' => 'post');
    register_post_type('vacancy', $args);
}

Dans un modèle de pied de page, j'essaie de faire ceci:

wp_list_pages('post_type=vacancy');

Ce qui - de lire les docs je pensais que fonctionnerait.

Y a-t-il un autre moyen de faire cela en plus de créer mes propres styles de requête et de menu? Cette liste de postes vacants apparaît sous forme de menu entre deux autres menus wp appelés avec wp_nav_menu. J'aimerais donc qu'elle se trouve dans une structure de liste comme ils le sont.

Toute aide ou suggestion pour des approches différentes est la bienvenue :)

2
Mere Development

Sur la wp_list_pages docs , il est indiqué que:

Si un type de message personnalisé donné est de nature hiérarchique, vous pouvez utiliserwp_list_pages ()pour répertorier le membre de ce type de message personnalisé.

Selon votre code, le CPT que vous essayez d'utiliser avec wp_list_pages () est not hierarchical.

Par conséquent, deux solutions:

1. Changer le type de message personnalisé

Rendez votre type de message hiérarchique (comme les pages) en définissant 'hierarchical' => true et 'capability_type' => 'page'.

2. Utilisez une fonction différente

Je recommande d'utiliser quelque chose comme:

$vacancy_menu = get_posts( 'post_type=vacancy' );

if( $vacancy_menu ) : ?>
    <ul>
    <?php foreach( $vacancy_menu as $menu_item ) : 
      setup_postdata( $menu_item );?>
        <li><a href="<?php the_permalink(); ?>" title="Go to <?php the_title(); ?>"> <?php the_title(); ?></a></li>
    <?php endforeach; ?>
    </ul>
<?php endif; ?>

Si vous le souhaitez, cela pourrait facilement être configuré en tant que fonction pour créer votre propre "wp_list_posts ()" ou pour correspondre au html de wp_nav_menu ().

Veillez également à consulter cet exemple dans CSS Tricks pour une explication similaire avec des informations sur la manière d’appliquer des classes "actuelles" aux liens.

4
bybloggers