web-dev-qa-db-fra.com

"Afficher toutes les options" dans les catégories de la liste n'affiche pas la taxonomie

J'ai une liste wp_list_categories pour afficher ma taxonomie personnalisée.

Tout fonctionne bien et je souhaite maintenant ajouter un lien show_option_all.

Cependant, lorsque le lien est cliqué, il affiche tous les messages de type publication par défaut et aucun de la taxonomie personnalisée. De toute évidence, l’intention est d’afficher tous les articles de cette taxonomie, et seulement ceux-là.

$args = array('post_type' => 'design_asset', 'show_count' => 1, 'taxonomy' => 'asset_type', 'show_option_all' => 'Show All');
wp_list_categories($args);

Cela peut-il fonctionner? Comment?

1
Steve

wp_list_categories() est une fonction étrange dans la mesure où elle est particulièrement utile dans certaines situations avec des taxonomies personnalisées, mais elle a été écrite avant même leur existence. (Il a été introduit en 2.1 et l'attribut taxonomy a été ajouté en 3.0 ( source ).)

Ce que vous voyez est un problème connu lié à un rapport de bogue associé (déposé il y a deux ans et la dernière activité il y a quatre mois). Si vous regardez la source , vous pouvez voir que le lien est codé en dur pour aller à la page page_for_posts. Donc, pour l'instant, vous cherchez une solution de rechange.

Comme @ tomas-cot note dans leur commentaire , l'argument post_type de votre extrait de code n'est pas un argument valide pour wp_list_categories(). Cependant, je pense que ce que vous souhaitez, c’est que le lien show_option_all se dirige vers la page Post Type Archive de votre CPT.

Vous pouvez faire cela avec une classe de marcheur ou peut-être pirater l'argument title_li, mais comme vous devez envelopper la fonction dans les balises <ul>, je vous recommanderais le code suivant (non testé):

<?php
$list_cat_args = array(
    'show_count' => 1,
    'taxonomy' => 'asset_type',
    'use_desc_for_title' => 0 /* title attr bad for accessibility! */
);
// get the post type archive link
$all_posts_url = get_post_type_archive_link( 'design_asset' );
?>
<ul>
    <li><a href="<?php echo esc_url( $all_posts_url ); ?>">Show All</a></li>
    <?php wp_list_categories( $list_cat_args ); ?>
</ul>
3
mrwweb