web-dev-qa-db-ja.com

ネットワーク上のカテゴリにマルチサイト投稿

私はメインサイトと3つのサブサイトを持つマルチサイトを運営しています(サブサイトの数は最後には200以上になるでしょう)。現在、すべてのサイトにAというカテゴリ、Bというカテゴリ、およびCというカテゴリがあります。カテゴリBのすべてのサブサイトに対して行われ、カテゴリCのすべてのサブサイトに対して行われたすべての投稿は、このように出力されます。

  • すべての投稿:100
  • カテゴリA内の投稿:20
  • カテゴリB内の投稿:30
  • カテゴリC内の投稿:50

もちろん、投稿はカテゴリAとカテゴリBに同時に含まれる可能性があり、1回しかカウントできません。

私はすべての投稿を数える方法を見つけました:

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>";

特定のカテゴリの投稿に問題があります。これが私がこれまでに持っているものです:

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>";

しかし、それは正しく機能していません。私はまったく正しい軌道に乗っていますか?

5
stillan00b

答えを見つけ、それが将来の世代に役立つように以下のコードを投稿してください。

<?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