Il modo migliore per rimuovere a livello di codice una categoria / termine da un post


8

Sto lavorando a uno script per convertire tutti i post in una determinata categoria per utilizzare un flag postmeta (il test di MySQL mi ha mostrato che su un sito grande come il mio questo porterà a una significativa riduzione dei tempi di query).

Quando converto i post voglio solo recuperare tutti i post nella categoria, aggiungere il postmeta quindi rimuovere la categoria, il che mi permetterà di ricaricare quella funzione fino a quando non ci sono più post nella categoria.

Non riesco a trovare una buona funzione per rimuovere un termine da un post. Voglio dargli l'ID postale e il termine tassonomia + ID e averlo gestito per me.

Sono anche interessato a plugin che possono fare la conversione per me se qualcuno ne conosce uno. Non sono riuscito a trovare nessuno che facesse cat-> postmeta, a differenza del contrario che può essere gestito dal plugin di Scribu.


Vuoi farlo tramite l'API o è corretto farlo con le query SQL? Non sarà troppo difficile, solo una query per inserire i nuovi valori postmeta, una per rimuovere le relazioni post-categoria e forse una per aggiornare il conteggio delle categorie.
Jan Fabry,

Voglio assolutamente usare l'API. La categoria conta ecc. Non è qualcosa che voglio tenere conto in questo caso. Wp_get_object_terms () / wp_set_object_terms () renderà già abbastanza semplice la manipolazione dei termini, ma speravo in una soluzione a una funzione dal core.
jerclarke,

Risposte:


6

Hmmm, non riesco nemmeno a ricordare o trovare la funzione di adattamento.

C'è wp_set_object_terms()quello che viene utilizzato in più wrapper come wp_set_post_categories(). Può sovrascrivere le categorie per un post.

Quindi puoi ottenere le categorie di post, controllare quelle indesiderate e riscriverle escludendo quelle indesiderate in quel caso.


Questa è la soluzione migliore finora e quella che probabilmente userò. get_object_terms () per recuperare, unset () quello che non voglio, quindi wp_set_object_terms () per salvare nuovamente l'array. Peccato che non ci siano wp_set_object_term () e wp_remove_object_term ().
jerclarke,

È così che l'ho fatto in passato. È piuttosto goffo e pieno di miglioramenti, ma credo che sia il miglior modello disponibile.
editore
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.