Perché get_term () richiede tassonomia? I term_ids non sono unici?


8

Una domanda WPSE correlata chiede come ottenere il termine specificando solo l'ID, senza specificare la tassonomia. La mia domanda è più filosofica. Generalmente, le cose nel core di WP sono lì per un motivo. Sto cercando di capire perché term_id non può essere la chiave primaria per il termine - perché abbiamo bisogno anche della tassonomia? Un record a termine singolo può essere membro di più tassonomie? Questo non è certamente attualmente supportato nell'API. Esiste un caso d'uso in cui ciò potrebbe essere desiderabile?

O è il $taxonomyparametro richiesto in get_term()una coda vestigiale da una precedente incarnazione della struttura del database?


3
Non sono del tutto sicuro, ma penso che sia più un problema di prestazioni poiché il campo di tassonomia della wp_term_taxonomytabella viene utilizzato come indice per quella tabella, il che rende la query più veloce (anche se è solo un termine).
Bainternet,

@Bainternet Per favore dai un'occhiata alla fine del mio A. EXPLAINdice term_id.
Kaiser

1
Penso che sia una coda rudimentale. Registrazione di un biglietto con Trac: core.trac.wordpress.org/ticket/20536
Tom Auger

Risposte:


3

Ho registrato un biglietto per questo con trac: http://core.trac.wordpress.org/ticket/20536

Tuttavia, risulta che per il momento è necessario, poiché WordPress attualmente (dal 2.x) ha un bug che associa due termini con lo stesso nome allo stesso term_id! Quindi è possibile (sebbene errato) che un singolo termine sia associato a più di una tassonomia. Vedi questo errore: http://core.trac.wordpress.org/ticket/5809

È piuttosto ampio, quindi l'implementazione della correzione dovrà essere testata a fondo molto attentamente. Cercherò di ricordare di aggiornare questa domanda se ci sono sviluppi.


Questo è Sicuramente il caso! Questo bug mi ha morso in una grande installazione (diverse centinaia) di siti multipli ... Molto strano. E nota che il bug ha 5 anni ... Tuttavia, la patch è prevista per l'inclusione nella versione 3.6, quindi questo potrebbe effettivamente essere risolto! (Finalmente! :))
Rinogo

Grazie per aver aggiornato questa domanda per scegliere la risposta corretta, Tom! Spero che questo possa aiutare coloro che si avvicinano a questa domanda in futuro. E grazie per la risposta / i collegamenti. Molto utile.
Rinogo,

1
Promemoria per aggiornare questa domanda - a proposito, non c'era qualcosa con il termine alias ?
Kaiser

Ciao @kaiser, aggiornalo con cosa? Non sono sicuro che ci sia stato un ulteriore movimento positivo verso una risoluzione delle questioni Trac menzionate.
Tom Auger,

Attualmente il target è impostato su 3,7-early . Vediamo cosa succede. Che cosa manca? Alla fine non ho potuto seguirli perché ci sono stati test unitari da quello che ho letto.
Kaiser,

1

perché abbiamo bisogno anche della tassonomia? Un record a termine singolo può essere membro di più tassonomie?

No. I termini hanno lumache a supporto degli archivi a termine. E avere le lumache due volte fa apparire molti minetrap o "wontfix" es in alcuni scenari di permalink.

Esiste un caso d'uso in cui ciò potrebbe essere desiderabile?

Sì: Immaginate di avere i termini per esempio sizee hanno tre tassonomie di nome length, width e height(si potrebbe anche pensare a colori). Ma questo non è supportato per i motivi scritti sopra.

Generalmente, le cose nel core di WP sono lì per un motivo. Sto cercando di capire perché term_id non può essere la chiave primaria per il termine - perché abbiamo bisogno anche della tassonomia?

Guardare il tavolo ed eseguire un EXPLAIN, term_id è la chiave primaria. Immagino che su sistemi più grandi potrebbe essere più veloce interrogare solo termini specifici della tassonomia usando un join (lento) piuttosto che interrogare tutto, ordinarli e filtrare ciò di cui hai bisogno.


Dai suoni delle cose, quindi, o è lì per errore (forse lasciato dallo schema precedente) o è lì per qualche caso futuro in cui ti potrebbe essere permesso di avere lumache duplicate (improbabile). In ogni caso, non sono sicuro che tu abbia risposto alla mia domanda.
Tom Auger,

@TomAuger "Esiste un caso d'uso in cui questo potrebbe essere desiderabile": Sì. Ma il contra contrappone di più. Un termine nell'imposta A può avere lo stesso nome di quello nell'imposta B, ma ad esempio un significato diverso. Quindi, se stai chiedendo "peso" nelle tassonomie "importanza" e "costi di spedizione", che cosa sarebbe "davvero pesante", quindi sollevare?
Kaiser

Sì, ma qui stiamo parlando del termine ID, non del termine NAME. L'ID già distingue completamente il termine da qualsiasi altro termine (in qualunque tassonomia) che potrebbe avere lo stesso nome. Si noti che si tratta meno di una domanda di database e di più sul motivo per cui è stata lasciata nel codice principale.
Tom Auger,

@TomAuger Sarebbe stato più semplice se avessi seguito questa Q alla fine di dicembre. Ora avrei di nuovo lavorato su questo: /
kaiser
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.