Sur mon site WordPress, j'ai trois catégories 'moviestar', 'interviews' et 'films'.
Sur une page de catégorie 'moviestar' intitulée 'Angelina Jolie' (et avec une variable personnalisée starname = 'Angelina Jolie'), je souhaite afficher les articles d'autres catégories marqués avec 'Angelina Jolie'.
Mon exemple de page:
(informations de page normales)
requête 1 - Afficher la liste chaînée de tous les articles de la catégorie 'interviews' avec le tag 'Angelina Jolie'
requête 2 - affiche la liste chaînée de tous les articles de la catégorie 'films' étiquetés avec 'Angelina Jolie'
query 3 - affiche toutes les photos dans la galerie NextGen avec le tag 'Angelina Jolie'
Donc mes questions sont:
Comment interroger des publications dans des catégories spécifiques marquées avec Angelina Jolie? Comme ça?
global $wpdb;
$yourCategory = '123';
$yourTag = 'Angelina-Jolie';
$querystr = "
SELECT p.* from $wpdb->posts p, $wpdb->terms t, $wpdb->term_taxonomy tt, $wpdb->term_relationships tr, $wpdb->terms t2, $wpdb->term_taxonomy tt2, $wpdb->term_relationships tr2
WHERE p.id = tr.object_id
AND t.term_id = tt.term_id
AND tr.term_taxonomy_id = tt.term_taxonomy_id
AND p.id = tr2.object_id
AND t2.term_id = tt2.term_id
AND tr2.term_taxonomy_id = tt2.term_taxonomy_id
AND (tt.taxonomy = 'category' AND tt.term_id = t.term_id AND t.slug = '$yourCategory')
AND (tt2.taxonomy = 'post_tag' AND tt2.term_id = t2.term_id AND t2.slug = '$yourTag')
";
$pageposts = $wpdb->get_results($querystr, OBJECT);
if ($pageposts):
foreach ($pageposts as $post):
setup_postdata($post);
// do regular WordPress Loop stuff in here
endforeach;
else :
// nothing found
endif;
Comment modifier ce qui précède pour interroger plusieurs catégories et stocker la catégorie dans laquelle se trouve l'article?
Est-il logique que je fasse une requête une fois sur la page, puis utilise une boucle PHP pour répercuter les informations sous chaque en-tête? Quelque chose comme...
while(($row=mysql_fetch_array($result))&&($row['cat']=='845')){
echo "<li><a href='".$row['url']."'>". $row['post_title'] . "</a></li>";
Serait-il préférable d’abandonner l’utilisation des fonctions et requêtes WordPress et d’interroger directement la base de données à l’aide de php normal?
J'ai vraiment besoin de conseils ou d'un bon exemple. J'utilise Wordpress 3.3.2
J'ai lu ce qui suit, mais je ne comprends pas encore:
http://www.borishoekmeijer.nl/show-related-posts-using-custom-taxonomy/https : //stackoverflow.com/questions/8563136/wordpress-query-filtering-by-custom-field-tag-and-category
WP_Query
peut traiter tous ces cas. Voir la section sur la gestion de plusieurs taxonomies .
$this_cat = 'interviews';
$this_tag = 'angelina-jolie';
$args = array(
'tax_query' => array(
'relation' => 'AND',
array(
'taxonomy' => 'category',
'field' => 'slug',
'terms' => $this_cat
),
array(
'taxonomy' => 'post_tag',
'field' => 'slug',
'terms' => $this_tag
)
)
);
$interviews = new WP_Query( $args );
while( $interviews->have_posts() ):
$interviews->the_post();
// normal loops stuff
endwhile;