web-dev-qa-db-fra.com

Obtenir l'URL pour le type de publication spécifique et la balise actuelle

J'ai un certain nombre de types d'articles personnalisés ainsi qu'une taxonomie personnalisée. J'ai créé une page d'archive pour la taxonomie qui répertorie chaque publication connectée, donc tout va bien là-bas. Ce que je voudrais réaliser est le suivant ...

Sur mon modèle unique pour cette taxonomie (je l'ai appelé Sujets), disons que si le sujet était 'cancer', j'aimerais un menu déroulant ou une liste de liens vers chaque type d'article personnalisé AVEC cette étiquette de taxonomie. En d'autres termes, si je montre tous les messages marqués avec 'cancer' pour chaque type de message (que j'ai actuellement), cette liste déroulante ou cette liste de liens en haut de la page me permettraient d'afficher uniquement les messages marqués pour chaque message. type de poste, comme dans ce qui suit:

Affichage des messages avec sujet: cancer


Sélectionnez un type de message pour afficher les messages de ce sujet:
Nom du type de poste 1 (lien)
Nom du type de poste 2 (lien)
Nom du type de poste 3 (lien)
(tous les articles marqués avec le cancer sont déjà affichés ici ...)

Le type de message 1, lorsque l'utilisateur clique dessus, charge à nouveau la page de taxonomie unique, mais ne répertorie que les messages marqués avec 'cancer' pour ce type de message. Cela s’appliquerait à l’une des quelques douzaines de balises correspondant à cette taxonomie personnalisée. Par conséquent, je ne peux pas coder l’URL en dur. Cela doit être dynamique.

J'espère que cela a du sens. J'ai cherché pendant deux jours à ce sujet et jusqu'à présent, je n'ai rien trouvé. Toute aide ou orientation serait appréciée. Malheureusement, le projet sur lequel je travaille est fermé et je ne peux partager aucun lien. J'utilise également le plugin Custom Post Type UI (non par choix) et je sais que ce plugin ne fonctionne pas bien avec les taxonomies, mais j'espère que mes mains ne sont pas attachées ici.

À votre santé.

3
Freddy

Si l'URL du terme de taxonomie 'cancer' dans votre exemple ressemble à ceci:

yourwebsite.com/topics/cancer/

vous pouvez ensuite filtrer ces résultats par type de message avec une URL structurée comme suit:

yourwebsite.com/topics/cancer/?post_type=question

Il suffit de mettre ceci dans functions.php

add_filter( 'pre_get_posts', 'wp123_post_type_by_taxonomy' );
function wp123_post_type_by_taxonomy( $query ) {
    if( is_tax( 'topics' ) && $query->is_main_query() ) {

        // get all post types:
        $post_types = get_post_types();

        // or add specific post types:
        // $post_types = array( 'post_type_1', 'post_type_2' );

        if ( !empty( $_GET['post_type'] ) && post_type_exists( $_GET['post_type'] ) ) {
            // show only results for this post type
            $query->set( 'post_type', $_GET['post_type'] );
        }

    }
}
1
locomo