web-dev-qa-db-fra.com

Sur la page Modèle de taxonomie, souhaitez ajouter Post_Type

J'ai une page de modèle de taxonomie personnalisée dans mon thème. Essentiellement, lorsque quelqu'un clique sur un lien de terme dans cette taxonomie, I-ALWAYS- souhaite ajouter un type de publication spécifique à la requête.

Je ne suis pas tout à fait sûr de savoir comment faire cela, j'ai trouvé quelques fonctions incluses dans PHP 5.3 qui semblent pouvoir le faire, mais j'ai la version 5.2 installée sur mon hôte.

Mais, je veux essentiellement prendre le $ wp_query actuel, ajouter 'post-type' => 'mon-custom-post-type', puis continuer avec $ wp_query dans ma boucle. Est-ce possible?

Je suis probablement trop fatigué et trop stressé et il existe un moyen beaucoup plus simple de faire cela et je ne peux tout simplement pas y penser = D

Merci!

MODIFIER----

Ok, il est clair que ma méthodologie est WAY off. Probablement une conséquence directe de la fatigue.

J'ai réussi à trouver du code pour manipuler $ wp_query afin d'ajouter ce que je voulais; mais cela n'a pas donné le résultat souhaité:

function _my_method(&$item, $key) {
    if ($key == 'post_type') {
        $item = 'backend_data';
    }
}
array_walk_recursive( $wp_query , '_my_method' );

Ainsi, dans la partie QUERY_VARS du tableau, post_type a maintenant une valeur, backend_data. Sauf que plus loin dans le tableau $ wp_query, je peux encore le voir interroger tous les types de publications disponibles.

[request] => SELECT SQL_CALC_FOUND_ROWS wp_posts.* FROM wp_posts INNER JOIN 
wp_term_relationships ON (wp_posts.ID = wp_term_relationships.object_id) WHERE 1=1 AND ( 
wp_term_relationships.term_taxonomy_id IN (35) ) AND wp_posts.post_type IN ('post', 
'page', 'attachment', 'company', 'backend_data', 'ps_promotion') AND (wp_posts.post_status = 'publish' OR wp_posts.post_author = 1 AND wp_posts.post_status = 'private') GROUP BY 
wp_posts.ID ORDER BY wp_posts.post_date DESC LIMIT 0, 10 [posts] => Array ( [0] => 
backend_data [1] => stdClass Object ( [ID] =>

et puis les deux posts de son tirage qui sont dans 'posts' ... il liste cependant à nouveau backend_data avant de commencer à extraire les informations de post. Mais je ne connais manifestement pas assez le fonctionnement interne de WordPress et des tableaux pour comprendre le fonctionnement de WTF à ce stade = D

MODIFIER -----

Ok, maintenant je suis tout simplement convaincu que mon cerveau est en ruine et qu'il doit exister un moyen plus explicite de faire cela car le piratage de tableaux en PHP ne fait pas l'affaire = D J'ai essayé de lancer wp_reset_query (); d'abord avant et ensuite après ma fonction ci-dessus, et il sort toujours la même chose avec tous les post-types pris en compte.

Donc, je suppose que j'ai ajouté tout cela à ma question sans raison :(

1
Sam K

Vous pouvez utiliser le crochet de filtre pre_get_posts pour vérifier si vous êtes sur la page de taxonomie et, le cas échéant, ajoutez simplement votre type de publication personnalisé à la requête, comme suit:

function add_my_type( $query ) {
    if ( $query->is_tax('YOUR_TAXONOMY') ) {
        $query->set( 'post_type', array('post','YOUR_CUSTOM_POST') );
    }
}
add_filter( 'pre_get_posts', 'add_my_type' );
4
Bainternet