Der beste Weg, um eine Kategorie / einen Begriff programmgesteuert aus einem Beitrag zu entfernen

8

Ich arbeite an einem Skript, um alle Beiträge in einer bestimmten Kategorie so zu konvertieren, dass stattdessen ein Postmeta-Flag verwendet wird (das Testen von MySQL hat mir gezeigt, dass dies auf einer so großen Site zu einer bedeutenden Verkürzung der Abfragezeit führt).

Beim Konvertieren von Posts möchte ich nur alle Posts in der Kategorie abrufen, die Postmeta hinzufügen und dann die Kategorie entfernen. Dadurch kann ich diese Funktion einfach neu laden, bis keine Posts mehr in der Kategorie vorhanden sind.

Ich kann jedoch keine gute Funktion zum Entfernen eines Begriffs aus einem Beitrag finden. Ich möchte ihm die Post-ID und den Begriff Taxonomie + ID geben und habe es für mich erledigt.

Ich interessiere mich auch für Plugins, die die Konvertierung für mich durchführen können, wenn jemand eines kennt. Ich konnte keine finden, die cat-> postmeta hat, im Gegensatz zum Gegenteil, das von Scribus Plugin verarbeitet werden kann.

Jerclarke
quelle
Möchten Sie dies über die API tun oder ist es in Ordnung, dies mit SQL-Abfragen zu tun? Es wird nicht allzu schwierig sein, nur eine Abfrage zum Einfügen der neuen Postmeta-Werte, eine zum Entfernen der Post-Kategorie-Beziehungen und möglicherweise eine zum Aktualisieren der Kategorieanzahl.
Jan Fabry
Ich möchte definitiv die API verwenden. Kategoriezählungen usw. möchte ich in diesem Fall nicht berücksichtigen müssen. Mit wp_get_object_terms () / wp_set_object_terms () ist es bereits ziemlich einfach, Begriffe zu manipulieren, aber ich hatte auf eine Ein-Funktions-Lösung aus dem Kern gehofft.
Jerclarke

Antworten:

6

Hmmm, ich kann mich auch nicht erinnern oder eine passende Funktion finden.

Dort wird wp_set_object_terms()das in mehreren Wrappern wie verwendet wp_set_post_categories(). Es kann Kategorien für einen Beitrag überschreiben.

So können Sie Post-Kategorien abrufen, nach unerwünschten suchen und diese zurückschreiben, in diesem Fall ohne unerwünschte.

Selten
quelle
Dies ist die bisher beste Lösung, die ich wahrscheinlich verwenden werde. get_object_terms () zum Abrufen, Deaktivieren () desjenigen, den ich nicht möchte, und wp_set_object_terms () zum erneuten Speichern des Arrays. Schade, dass es keine wp_set_object_term () und wp_remove_object_term () gibt.
Jerclarke
So habe ich es in der Vergangenheit gemacht. Es ist ziemlich klobig und reich an Verbesserungen, aber ich glaube, es ist das beste verfügbare Muster.
Herausgeber