Aqui estão algumas reflexões sobre o assunto, mas observe que esta não é de forma alguma uma resposta conclusiva, pois pode haver algumas coisas que negligenciei, mas isso deve lhe dar uma visão das possíveis dificuldades.
Sim, tecnicamente pode haver consequências.
Onde chamar wp_defer_term_counting(true)
se torna realmente benéfico é quando, por exemplo, você está realizando uma inserção em massa no banco de dados de postagens e atribuiu termos a cada objeto como parte do processo.
Nesse caso, você faria o seguinte:
wp_defer_term_counting(true); //defer counting terms
//mass insertion or posts and assignment of terms here
wp_defer_term_counting(false); //count terms after completing business logic
Agora, no seu caso, se você estiver inserindo apenas uma postagem por vez, adiar a contagem de termos ainda o beneficiará. No entanto, não chame wp_defer_term_counting(false)
depois que sua operação deixar você e outras partes envolvidas com a solicitação em um ligar se você confiar na contagem de termos para qualquer outra lógica / processamento, condicional ou de outra forma.
Para explicar mais, digamos que você faça o seguinte:
Suponha que temos 3 termos dentro de uma taxonomia chamada product_cat
, os IDs para esses termos são 1 (nome do termo A), 2 (nome do termo B) e 3 (nome do termo C) respectivamente.
Cada um dos termos acima já tem uma contagem de termos de 5
(apenas para o exemplo).
Então isso acontece ...
wp_defer_term_counting(true); //defer counting terms
$post_id = wp_insert_post($data);
wp_set_object_terms($post_id, array(1, 2, 3), 'product_cat');
Depois, em sua lógica, você decide buscar o termo porque deseja avaliar a quantidade de objetos associados a esse termo e realizar alguma outra ação com base no resultado.
Então você faz isso ...
$terms = get_the_terms($post_id, 'product_cat');
//let's just grab the first term object off the array of returned results
//for the sake of this example $terms[0] relates to term_id 1 (A)
echo $terms[0]->count; //result 5
//dump output of $terms above
array (
0 =>
WP_Term::__set_state(array(
'term_id' => 1,
'name' => 'A',
'slug' => 'a',
'term_group' => 0,
'term_taxonomy_id' => 1,
'taxonomy' => 'product_cat',
'description' => '',
'parent' => 0,
'count' => 5, //notice term count still equal to 5 instead of 6
'filter' => 'raw',
)),
)
No caso do nosso exemplo, dissemos que o nome do termo A (term_id 1) já tem 5 objetos associados a ele, em outras palavras já tem uma contagem de termos de 5.
Portanto, esperamos que o parâmetro count
no objeto retornado acima seja 6, mas como você não chamou wp_defer_term_counting(false)
após sua operação, as contagens de termos não foram atualizadas para os termos aplicáveis (termo A, B ou C ).
Portanto, essa é a consequência de chamar wp_defer_term_counting(true)
sem chamar wp_defer_term_counting(false)
após sua operação.
Agora, a questão é, claro, isso afeta você? E se você não precisar chamar get_the_terms
ou executar alguma ação que recupere o termo onde você usa o valor count
para executar alguma outra operação? Bem, nesse caso, ótimo, não há problema para você .
Mas ... e se outra pessoa estiver conectada à ação set_object_terms
na função wp_set_object_terms()
e estiver confiando que a contagem de termos está correta? Agora você vê onde as conseqüências podem surgir.
Ou, se após o término da solicitação, outra solicitação for executada, recuperando um termo de taxonomia e fazendo uso da propriedade count
em sua lógica de negócios? Isso pode ser um problema.
Embora possa parecer muito improvável que count
possam ser muito prejudiciais, não podemos assumir a forma como esses dados serão usados com base em nossa própria filosofia.
Além disso, conforme mencionado na resposta alternativa, a contagem, conforme vista na tabela da lista de taxonomia, também não será atualizada.
Na verdade, a única maneira de atualizar as contagens de termos depois de adiar a contagem de término e sua solicitação foi chamar manualmente wp_update_term_count($terms, $taxonomy)
ou aguardar até que alguém adicione um termo para a taxonomia especificada por meio da interface da taxonomia ou de forma programática.
Alimento para o pensamento.