Ecco alcune riflessioni sulla questione, ma tieni presente che questa non è affatto una risposta conclusiva in quanto potrebbero esserci alcune cose che ho trascurato, tuttavia ciò dovrebbe darti un'idea dei potenziali gotchas.
Sì, tecnicamente potrebbero esserci delle conseguenze.
Il punto in cui la chiamata wp_defer_term_counting(true)
diventa veramente vantaggioso è quando, ad esempio, si esegue un inserimento di massa nel database di post e si assegnano termini a ciascun oggetto come parte del processo.
In tal caso, faresti quanto segue:
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
Nel tuo caso, se stai inserendo solo un post alla volta, il rinvio del conteggio dei termini ti trarrà comunque beneficio se non chiamerai wp_defer_term_counting(false)
dopo che l'operazione potrebbe lasciare te e o altre parti coinvolte nella richiesta in un vincolo se fai affidamento sul conteggio dei termini per qualsiasi altra logica / elaborazione, condizionale o meno.
Per spiegare ulteriormente, supponiamo che tu faccia quanto segue:
Supponiamo di avere 3 termini all'interno di una tassonomia chiamata product_cat
, gli ID per questi termini sono rispettivamente 1 (nome del termine A), 2 (nome del termine B) e 3 (nome del termine C).
Ciascuno dei termini sopra ha già un conteggio dei termini di 5
(solo per l'esempio).
Quindi questo succede ...
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');
Successivamente, nella tua logica, decidi di recuperare il termine perché desideri valutare la quantità di oggetti associati a quel termine ed eseguire altre azioni in base al risultato.
Quindi fai questo ...
$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',
)),
)
Nel caso del nostro esempio, abbiamo detto che il termine nome A (term_id 1) ha già 5 oggetti associati ad esso, in altre parole ha già un conteggio dei termini di 5.
Quindi ci aspettiamo che il count
parametro sull'oggetto restituito sopra sia 6 ma poiché non hai chiamato wp_defer_term_counting(false)
dopo l'operazione, i conteggi dei termini non sono stati aggiornati per i termini applicabili (termine A, B o C).
Pertanto, questa è la conseguenza della chiamata wp_defer_term_counting(true)
senza chiamare wp_defer_term_counting(false)
dopo l'operazione.
Ora la domanda è ovviamente, questo ti influenza? Cosa succede se non è necessario chiamare get_the_terms
o eseguire alcune azioni che recuperano il termine in cui si utilizza il count
valore per eseguire un'altra operazione? Bene in quel caso fantastico, nessun problema per te .
Ma ... cosa succede se qualcun altro è agganciato set_object_terms
all'azione nella wp_set_object_terms()
funzione e si basano sul conteggio dei termini corretto? Ora vedi dove potrebbero sorgere le conseguenze.
O cosa succede se dopo che la richiesta è terminata, viene eseguita un'altra richiesta che recupera un termine di tassonomia e fa uso della count
proprietà nella loro logica aziendale? Questo potrebbe essere un problema.
Sebbene possa sembrare inverosimile che i count
valori possano essere molto dannosi, non possiamo supporre il modo in cui tali dati verranno utilizzati in base alla nostra filosofia.
Inoltre, come indicato nella risposta alternativa, il conteggio riportato nella tabella degli elenchi di tassonomia non verrà aggiornato.
In effetti, l'unico modo per aggiornare il conteggio dei termini dopo aver rinviato il conteggio dei termini e la richiesta è terminata è chiamare manualmente wp_update_term_count($terms, $taxonomy)
o attendere fino a quando qualcuno aggiunge un termine per la tassonomia data tramite l'interfaccia utente della tassonomia o programmaticamente.
Cibo per la mente.