web-dev-qa-db-ja.com

固定カテゴリー数

どういうわけか私の投稿数はphp経由で行を挿入するために正しくありません。カウントを更新するための次のコードがありますが、正しいですか?

global $wpdb;
$result = mysql_query("SELECT term_id,term_taxonomy_id FROM $wpdb->term_taxonomy where taxonomy = 'category'");
while ($row = mysql_fetch_array($result)) {
  $term_taxonomy_id = $row['term_taxonomy_id'];      
  $countresult = mysql_query("SELECT object_id FROM $wpdb->term_relationships WHERE object_id IN (SELECT ID FROM $wpdb->posts WHERE post_type = 'post' AND post_status = 'publish') AND term_taxonomy_id = '$term_taxonomy_id'");
  $count = mysql_num_rows($countresult);
  mysql_query("UPDATE $wpdb->term_taxonomy SET count = '$count' WHERE term_taxonomy_id = '$term_taxonomy_id'");
        }
4
Innate

各用語の投稿数を更新するだけの場合は、wp_update_term_count_now( $terms, $taxonomy )で更新する必要があります。影響を受ける用語を配列として渡し、各分類法ごとに1回実行するだけです。

新しい行を挿入する前にwp_defer_term_counting( true )を呼び出し、投稿を追加した後でwp_defer_term_counting( false )を呼び出してカウントに追いつくこともできます。

5
goldenapples

Goldenapplesの答えの例:

$update_taxonomy = 'my_taxonomy';
$get_terms_args = array(
        'taxonomy' => $update_taxonomy,
        'fields' => 'ids',
        'hide_empty' => false,
        );

$update_terms = get_terms($get_terms_args);
wp_update_term_count_now($update_terms, $update_taxonomy);

仕事をする他の人によって書かれたsqlスクリプトがあります - woocommerceの商品カテゴリまたは他のカテゴリカウントの更新カウント。

実行にも数秒かかります。

https://stackoverflow.com/questions/18669256/how-to-update-wordpress-taxonomiescategories-tags-count-field-after-bulk-impo

0
Dave Hilditch