Fixing category count

4

De alguma forma, minhas contagens de post estão incorretas devido à inserção de linhas via php. Eu tenho o seguinte código para atualizar a contagem, está correto?

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'");
        }
    
por Innate 02.03.2011 / 21:14

3 respostas

5

Se você quiser apenas atualizar as contagens de postagens em cada termo, wp_update_term_count_now( $terms, $taxonomy ) deve fazer isso ... apenas passe os termos afetados como uma matriz e execute-os uma vez para cada taxonomia que você tiver.

Você também pode chamar wp_defer_term_counting( true ) antes de inserir novas linhas e, depois de adicionar suas postagens, recuperar as contagens chamando wp_defer_term_counting( false ) .

    
por goldenapples 02.03.2011 / 22:10
0

Há um script sql escrito por outra pessoa que faz o trabalho - as contagens de atualizações para categorias de produtos no woocommerce ou em qualquer outra contagem de categoria.

Leva apenas alguns segundos para ser executado também:

enlace

    
por Dave Hilditch 23.11.2014 / 19:28
0

Exemplo para a resposta de 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);
    
por Martin from WP-Stars.com 17.05.2016 / 07:36