web-dev-qa-db-fra.com

Articles multisites dans les catégories sur le réseau

Je gère un multisite avec un site principal et 3 sous-sites (le nombre de sous-sites sera supérieur à 200 à la fin). Maintenant, sur chaque site, j'ai une catégorie appelée A, une catégorie appelée B et une catégorie C. Sur mon site principal, je souhaite publier un décompte de tous les articles publiés sur tous les sous-sites, tous les articles publiés sur tous les sous-sites de la catégorie A, tous les articles. fait sur tous les sous-sites dans la catégorie B, tous les messages postés sur tous les sous-sites dans la catégorie C. Donc, je reçois le résultat comme ceci:

  • Tous les articles: 100
  • Articles dans la catégorie A: 20
  • Articles dans la catégorie B: 30
  • Billets dans la catégorie C: 50

Bien sûr, un article peut être dans les catégories A et B en même temps, et ne peut être compté qu'une fois.

J'ai trouvé le moyen de compter tous les messages:

global $wpdb;
$post_count = $wpdb->get_var( 
    "SELECT COUNT(*) FROM wp_2_posts WHERE post_status = 'publish' AND post_type = 'post' " );
$post_count1 = $wpdb->get_var( 
    "SELECT COUNT(*) FROM wp_3_posts WHERE post_status = 'publish' AND post_type = 'post' " );
$post_count2 = $wpdb->get_var( 
    "SELECT COUNT(*) FROM wp_4_posts WHERE post_status = 'publish' AND post_type = 'post' " );

$sum = $post_count + $post_count1 + $post_count2;

echo "<p>All posts {$sum}</p>";

J'ai des problèmes avec les messages dans certaines catégories. Voici ce que j'ai jusqu'à présent:

global $wpdb;
$wp_count_terms = $wpdb->get_var( 
    "SELECT COUNT(*) FROM wp_2_term_taxonomy WHERE term_taxonomy_id = '22' " );
$wp_count_terms1 = $wpdb->get_var( 
    "SELECT COUNT(*) FROM wp_3_term_taxonomy WHERE term_taxonomy_id = '16' " );
$wp_count_terms2 = $wpdb->get_var( 
    "SELECT COUNT(*) FROM wp_4_term_taxonomy WHERE term_taxonomy_id = '13' " );

$sum = $wp_count_terms + $wp_count_terms1 + $$wp_count_terms2;

echo "<p>Posts in category A: {$sum}</p>";

Mais cela ne fonctionne pas correctement. Est-ce que je suis sur la bonne voie?

5
stillan00b

Trouvez la réponse en postant le code ci-dessous pour aider les générations futures.

<?php

global $wpdb;

$count_terms = $wpdb->get_var ("SELECT COUNT(*)
FROM wp_2_term_taxonomy, wp_2_posts, wp_2_term_relationships 
WHERE wp_2_posts.ID = wp_2_term_relationships.object_id 
AND wp_2_term_relationships.term_taxonomy_id = wp_2_term_taxonomy.term_taxonomy_id 
AND wp_2_term_taxonomy.term_id = '22' 
AND wp_2_posts.post_type = 'post' 
AND wp_2_posts.post_status = 'publish' ");

$count_terms1 = $wpdb->get_var ("SELECT COUNT(*)
FROM wp_3_term_taxonomy, wp_3_posts, wp_3_term_relationships 
WHERE wp_3_posts.ID = wp_3_term_relationships.object_id 
AND wp_3_term_relationships.term_taxonomy_id = wp_3_term_taxonomy.term_taxonomy_id 
AND wp_3_term_taxonomy.term_id = '16' 
AND wp_3_posts.post_type = 'post' 
AND wp_3_posts.post_status = 'publish' ");


$count_terms2 = $wpdb->get_var ("SELECT COUNT(*)
FROM wp_4_term_taxonomy, wp_4_posts, wp_4_term_relationships 
WHERE wp_4_posts.ID = wp_4_term_relationships.object_id 
AND wp_4_term_relationships.term_taxonomy_id = wp_4_term_taxonomy.term_taxonomy_id 
AND wp_4_term_taxonomy.term_id = '13' 
AND wp_4_posts.post_type = 'post' 
AND wp_4_posts.post_status = 'publish' ");



$sum = $count_terms + $count_terms1 + $count_terms2;
echo "<p>Category A sum: {$sum}</p>";

?>
1
stillan00b