Aquí hay algunas ideas sobre el tema, pero tenga en cuenta que esto no es una respuesta concluyente, ya que puede haber algunas cosas que he pasado por alto, sin embargo, esto le dará una idea de los posibles problemas.
Sí, técnicamente podría haber consecuencias.
El hecho de que wp_defer_term_counting(true)
se convierta en algo realmente beneficioso es cuando, por ejemplo, está realizando una inserción masiva en la base de datos de publicaciones y términos asignados a cada objeto como parte del proceso.
En tal caso, harías lo siguiente:
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
Ahora, en su caso, si solo está insertando una publicación a la vez, el aplazamiento del recuento de términos seguirá beneficiándole, sin embargo, no llame a wp_defer_term_counting(false)
después de que su operación pueda dejarlo a usted y a otras partes involucradas en la solicitud. vincular si confía en el recuento de términos para cualquier otra lógica / procesamiento, condicional o de otro tipo.
Para seguir explicando, supongamos que haces lo siguiente:
Supongamos que tenemos 3 términos dentro de una taxonomía llamada product_cat
, los ID para esos términos son 1 (nombre de término A), 2 (nombre de término B) y 3 (nombre de término C) respectivamente.
Cada uno de los términos anteriores ya tiene un recuento de términos de 5
(solo para el ejemplo).
Entonces esto sucede ...
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');
Luego, más adelante en tu lógica, decides obtener el término porque deseas evaluar la cantidad de objetos asociados con ese término y realizar alguna otra acción basada en el resultado.
Así que haces esto ...
$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',
)),
)
En el caso de nuestro ejemplo, dijimos que el término nombre A (term_id 1) ya tiene 5 objetos asociados, en otras palabras ya tiene un recuento de términos de 5.
Por lo tanto, esperamos que el parámetro count
en el objeto devuelto anterior sea 6, pero debido a que no llamó a wp_defer_term_counting(false)
después de su operación, los recuentos de términos no se actualizaron para los términos aplicables (término A, B o C ).
Por lo tanto, esa es la consecuencia de llamar a wp_defer_term_counting(true)
sin llamar a wp_defer_term_counting(false)
después de su operación.
Ahora la pregunta es, por supuesto, ¿esto te afecta? ¿Qué sucede si no necesita llamar a get_the_terms
o realizar alguna acción que recupere el término en el que utiliza el valor count
para realizar alguna otra operación? Bueno, en ese caso, genial, no hay problema para ti .
Pero ... ¿qué pasa si alguien más está enganchado a la acción set_object_terms
en la función wp_set_object_terms()
y confía en que el recuento de términos sea correcto? Ahora ves donde podrían surgir las consecuencias.
¿O qué sucede si después de que la solicitud haya finalizado, se realiza otra solicitud que recupera un término de taxonomía y hace uso de la propiedad count
en su lógica empresarial? Eso podría ser un problema.
Aunque puede parecer descabellado que los valores de count
podrían ser muy perjudiciales, no podemos asumir la forma en que se usarán esos datos según nuestra propia filosofía.
También como se menciona en la respuesta alternativa, el recuento tal como se ve en la tabla de la lista de taxonomía tampoco se actualizará.
De hecho, la única forma de actualizar los recuentos de términos después de que haya aplazado el recuento de términos y haya finalizado su solicitud es llamar manualmente wp_update_term_count($terms, $taxonomy)
o esperar hasta que alguien agregue un término para la taxonomía determinada ya sea a través de la interfaz de usuario de la taxonomía o mediante programación.
Alimento para el pensamiento.