WP codexからの次のサンプルコードスニペットを調べます。
$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' ) )
);
カテゴリだけがIDによる入力を受け取ることがわかります。
何らかの理由で(私はその理由についての背後にある歴史を知りたいのですが)、タグとカスタム分類法はそれらの入力を異なった方法で取ります。
ここでは、分類用語を設定するための3つの異なる方法を検討しています。
猫には
'post_category' => [ array(<category id>, <...>) ]
タグの場合は、
'tags_input' => [ '<tag>, <tag>, <...>' ]
そして最後にCTのために、
'tax_input' => [ array( 'taxonomy_name' => array( 'term', 'term2', 'term3' ) )
この3つの異なる方法で、私は物事が複雑になってきていると思います。それができないわけではありませんが、プログラム的には、あるべきよりも複雑に思えます。
投稿を受け取るためだけにここで(投稿wp_insert_post内で)未分類のCat ID 1を使用しないで、適切な猫、タグ、カスタム分類法をすべて同じ関数呼び出しを使用して実行しないのではないかと思いました。
それを念頭に置いて、私は2つの選択肢があります。 wp set object terms
とwp set post terms
一方が他方より優れているかどうか、そしてここで2つの異なるが非常に似ている(サブセットとスーパーセットのような)タイプの状況があるのはなぜかを知りたいのです。
何千もの投稿や猫、タグをプログラムで管理するときにどれを使用するのが推奨されますか - 特に移行段階では?
実際のところ、wp_set_post_terms()
はwp_set_object_terms()
を使用しますが、特別なチェックはほとんどしません。これはwp_set_object_terms()
Codexページにもあります。
Wp_set_post_terms()は値をチェックし、分類法をコンマで区切って変換し、階層的な用語を整数で検証するので、おそらくもっと便利な関数です。
http://codex.wordpress.org/Function_Reference/wp_set_object_terms#Notes