web-dev-qa-db-ger.com

wp set object terms vs wp set post terms

Untersuchen des folgenden Codebeispiels aus dem Codex WP,

$post = array(
  'ID' => [ <post id> ] //Are you updating an existing post?
  'post_author' => [ <user ID> ] //The user ID number of the author.
  'post_category' => [ array(<category id>, <...>) ] //Add some categories.
  'post_content' => [ <the text of the post> ] //The full text of the post.
  'post_date' => [ Y-m-d H:i:s ] //The time post was made.
  'post_title' => [ <the title> ] //The title of your post.
  'post_type' => 'post'
  'tags_input' => [ '<tag>, <tag>, <...>' ] //For tags.
  'tax_input' => [ array( 'taxonomy_name' => array( 'term', 'term2', 'term3' ) ) 
);  

Ich sehe, dass nur die Kategorien ihre Eingabe durch IDs erhalten.

Aus irgendeinem Grund (und ich würde gerne wissen, warum) werden Tags und benutzerdefinierte Taxonomien unterschiedlich eingegeben.

Hier sehen wir uns drei verschiedene Möglichkeiten an, um die Taxonomiebegriffe festzulegen.

Für Katzen verwenden

'post_category' => [ array(<category id>, <...>) ]

für tags verwenden,

'tags_input' => [ '<tag>, <tag>, <...>' ]

und schließlich für CTs verwenden

'tax_input' => [ array( 'taxonomy_name' => array( 'term', 'term2', 'term3' ) ) 

Ich denke, mit diesen drei verschiedenen Möglichkeiten werden die Dinge immer komplizierter. Es ist nicht so, dass es nicht möglich ist, aber programmatisch, es scheint komplizierter zu sein, als es sein sollte.

Ich überlegte, warum ich nicht einfach die nicht kategorisierte Katzen-ID 1 hier (innerhalb des Beitrags wp_insert_post) verwende, um den Beitrag zu erhalten, und mich dann um die richtigen Katzen, Tags und benutzerdefinierten Taxonomien zu kümmern, die alle denselben Funktionsaufruf verwenden.

In diesem Sinne habe ich zwei Möglichkeiten; wp set object terms und wp set post terms

Ich würde gerne wissen, ob einer besser ist als der andere und warum wir hier zwei verschiedene, aber sehr ähnliche Situationen haben (fast wie eine Untermenge gegen eine Obermenge).

Welches wird empfohlen, um Tausende von Posts und Katzen-Tags programmgesteuert zu verwalten - insbesondere in einer Migrationsphase?

6
Average Joe

Richtig, es gibt keinen großen Unterschied zwischen ihnen. Tatsächlich verwendet wp_set_post_terms()wp_set_object_terms(), führt aber nur wenige zusätzliche Überprüfungen für Sie durch. Das steht auch auf der wp_set_object_terms() Codex-Seite:

Vielleicht ist wp_set_post_terms () eine nützlichere Funktion, da sie die Werte überprüft, durch Kommas getrennte Taxonomien konvertiert und hierarchische Begriffe in ganzen Zahlen validiert.

http://codex.wordpress.org/Function_Reference/wp_set_object_terms#Notes

4
Mamaduka