Фиксирующее количество категорий


Каким-то образом количество моих сообщений неверно из-за вставки строк через 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'");
        }
Author: Innate, 2011-03-02

4 answers

Если вы просто хотите обновить количество сообщений в каждом термине, wp_update_term_count_now( $terms, $taxonomy ) следует это сделать... просто передайте затронутые термины в виде массива и запустите его один раз для каждой имеющейся у вас таксономии.

Вы также можете позвонить wp_defer_term_counting( true ) перед вставкой новых строк, а затем после добавления своих записей, чтобы узнать количество, позвонив wp_defer_term_counting( false ).

 6
Author: goldenapples, 2011-03-02 21:16:05

Есть sql-скрипт, написанный кем-то другим, который выполняет эту работу - обновления учитываются для категорий продуктов в woocommerce или любых других категориях.

Для запуска также требуется всего несколько секунд:

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

 1
Author: Dave Hilditch, 2017-05-23 12:40:08

Пример ответа 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);
 1
Author: Martin from WP-Stars.com, 2016-05-17 05:36:25

На мой взгляд, лучший способ сделать это - использовать WP-CLI. Для этого есть команда:

$ wp term recount category

Найти документацию здесь: https://developer.wordpress.org/cli/commands/term/recount/

 0
Author: David Faber, 2020-12-09 14:47:51