web-dev-qa-db-fra.com

wp définir les conditions d'objet vs wp définir les conditions de publication

En examinant le fragment de code exemple suivant du 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' ) ) 
);  

Je vois que seules les catégories prennent leur entrée par ID.

Pour une raison quelconque (dont j'aimerais connaître l'historique), les balises et les taxonomies personnalisées prennent leur entrée différemment.

Ici, nous examinons 3 façons différentes de définir les termes de taxonomie;

Pour les chats, utilisez

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

pour les tags, utilisez,

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

et enfin pour les CT, utilisez

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

Avec ces 3 façons différentes, je pense que les choses se compliquent. Ce n’est pas que cela ne puisse pas être fait mais par programme, cela semble plus compliqué que cela ne devrait être.

Je me suis dit pourquoi ne pas utiliser simplement l'ID de chat non catégorisé de 1 ici (dans le message wp_insert_post) juste pour obtenir le message, puis m'occuper des chats, des tags et des taxonomies personnalisés, en utilisant le même appel de fonction.

Dans cet esprit, j'ai 2 choix; wp set object terms et wp set post terms

J'aimerais savoir si l'un est meilleur que l'autre et pourquoi nous avons deux types de situation différents mais très similaires (presque comme un sous-ensemble ou un sur-ensemble).

Lequel est-il recommandé d'utiliser lors de la gestion de milliers de publications, et de balises cats, par programme, notamment lors d'une phase de migration?

6
Average Joe

Bien, il n'y a pas de grande différence entre eux. En fait, wp_set_post_terms() utilise wp_set_object_terms() mais effectue peu de vérifications supplémentaires pour vous. Cela est également noté sur la page wp_set_object_terms() Codex:

Wp_set_post_terms () est peut-être une fonction plus utile car elle vérifie les valeurs, convertit les taxonomies séparées par des virgules et valide les termes hiérarchiques en entiers.

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

4
Mamaduka