2016-12-21 2 views
0

J'ai un type de message personnalisé (Articles Médias) qui utilise des champs personnalisés et possède une taxonomie personnalisée (catégorie d'article média) et 14 termes dans cette taxonomie. Je n'ai aucun problème à sortir tous les messages personnalisés en utilisant un modèle d'archive CPT.Requête de taxonomie personnalisée WordPress

J'ai aussi un menu dans la barre latérale qui liste les termes dans le but de filtrer les messages personnalisés (j'ai utilisé un widget de menu WP personnalisé pour faire la liste).

J'ai un modèle de taxonomie personnalisé mis en place avec une requête. Je suis en mesure d'afficher les messages avec succès, soit en combinaison ou seul, en fonction de ce terme de taxonomie est placé dans les args. Donc, cela fonctionne comme prévu - SI je n'ai pas besoin d'utiliser le menu de filtrage. Mais quand j'essaie d'utiliser le menu des termes de taxonomie, chaque élément du menu affiche la même chose.

Ce que je dois faire est que chaque terme de taxonomie dans ce menu affiche SEULEMENT les CPT de ce terme. Oui, je pourrais faire un modèle pour chaque terme (tous les 14 d'entre eux!), Mais où est le plaisir dans ce domaine? De plus, le client ajoutera vraisemblablement plus de termes à la volée, de sorte qu'il devrait accommoder ceux qui viennent d'être générés.

Essentiellement, j'aimerais avoir une requête/un gabarit pour tous les termes de taxonomie qui afficheraient les messages de façon dynamique, peu importe le terme de taxonomie utilisé.

Quelqu'un peut-il m'aider à pousser cela au niveau suivant?

Voici l'écran actuellement:

screenshot of current display with sidebar of custom taxonomies

Voici ma requête en cours:

$date = get_field('pub_date', false, false); 
$date = new DateTime($date); 

$args = array(
'post_type' => 'media_articles', 
'post_status' => 'publish', 
    'posts_per_page' => '10', 
'meta_key'   => 'media_publication_date', 
'orderby'   => 'meta_value', 
'order'    => 'DESC', 
'tax_query' => array(
    'relation' => 'OR', 
    array(
     'taxonomy' => 'media-article-category', 
     'field' => 'slug', 
     'terms' => array('focus-on-the-lands'), // 
    ), 
    array(
     'taxonomy' => 'media-article-category', 
     'field' => 'slug', 
     'terms' => array('the-local-story'), // 
    ), 
), 

); J'utilise Genesis Framework.

+0

Juste au cas où vous ne saviez pas, il y a aussi un séparé SO pour WordPress à http://wordpress.stackexchange.com/ – j08691

+0

je n'étais pas, merci @ j08691. Devrais-je supprimer celui-ci pour le poster là-bas à la place? – dcvon

+0

Vous pouvez poster sur les deux – j08691

Répondre

0

Lorsque vous cliquez sur un élément de menu taxonomie, wordpress filtre les publications par défaut. Je pense que vous ne devriez pas utiliser votre propre requête ici, mais vous pouvez modifier la requête par défaut.

Utilisez le crochet d'action pre_get_posts pour modifier la requête principale.

function my_media_article_category_query($query) { 
    if (is_tax('media-article-category')) { 
     $query->set('meta_key', 'media_publication_date'); 
     $query->set('orderby', 'meta_value'); 
     $query->set('order', 'DESC'); 
    } 
} 
add_filter('pre_get_posts', 'my_media_article_category_query'); 
+0

Merci pour votre réponse Andy. Oui, il effectue le filtrage par défaut mais il n'accepte pas mes champs personnalisés par défaut. Donc, le filtrage fonctionne mais il affiche uniquement le permalien de publication, que je n'utilise pas réellement dans ma mise en page car nous n'avons aucune utilité pour le seul article. Donc, mon problème est d'obtenir à la fois le bon filtrage et les champs personnalisés pour tous travailler ensemble. Est-ce que ça a du sens? J'ai essayé votre code ci-dessus et il fait la même chose. – dcvon

+0

J'ai modifié mon article original pour corriger la terminologie que j'utilisais. Je cherche actuellement à filtrer les messages par TERM de taxonomie. Donc, j'ai une taxonomie et 14 termes dans cette taxe personnalisée et les termes sont tous répertoriés dans un menu barre latérale, comme indiqué dans la capture d'écran ci-dessus. – dcvon