web-dev-qa-db-fra.com

Filtre de lien de catégorie actuel

Dans mon thème, j'ai un modèle d'archive pour une taxonomie (taxonomy-cat_projet.php). Dans ce modèle, j'ai une liste de ces liens de taxonomies pour permettre aux utilisateurs de sélectionner une taxonomie. Voici le code que j'utilise pour lister les liens de catégories:

<ul>
    <?php  $args = array( 
            'title_li' => '',
            'taxonomy' => 'cat_projet',
            'hide_empty' => false,
    );
    wp_list_categories( $args ); ?>
</ul>

Y a-t-il moyen de faire en sorte qu'une fois une catégorie sélectionnée, son lien changera de sorte que s'il clique dessus, il liste les publications de toutes les catégories. comme, le premier clic rend cette catégorie active, et la deuxième fois que l'on clique dessus, elle devient inactive.

Je sais que je pourrais le faire en javascript, mais je préfère le faire en php, par exemple en utilisant un filtre "lien de taxonomie en cours" s'il existe.

1
Badr

En interne, wp_list_categories() utilise get_term_link() pour l'URL des termes. Cette fonction peut être filtrée à l'aide du filtre term_link. Vous pouvez ainsi filtrer tous les liens du terme actuel et les remplacer par des liens vers l'archive de type publication:

function wpse_307202_term_link( $termlink, $term, $taxonomy ) {
    if ( is_tax( 'cat_projet' ) ) {
        if ( get_queried_object_id() === $term->term_id ) {
            $termlink = get_post_type_archive_link( 'post_type_name' );
        }
    }

    return $termlink;
}
add_filter( 'term_link', 'wpse_307202_term_link', 10, 3 );
1
Jacob Peattie