wp_insert_post() という関数を使ってwordpressに投稿を挿入しています。
それぞれの投稿にカスタムフィールドをいくつか挿入して、meta_infoパラメータを使用したにもかかわらずドキュメントを読んでみたいのですが、次のようにしてみました。
$data = array(
'post_author' => 1,
'post_status' => 'publish',
'post_title' => $post->getTitle(),
'post_content' => $post->getContent(),
'post_category' => $post->getCategory(),
'tags_input' => $post->getTags(),
'meta_input' => array( "_test" => "testx1" )
);
$postID = wp_insert_post( $data );
投稿が正しく挿入され、タグも付けられます。しかし、カスタムフィールドは追加されていません。 add_post_meta() を使ってそれらを追加できることはわかっていますが、データベースで "testx1"を検索したため、 meta_input パラメータの用途を知りたいのです投稿を挿入した後、結果が見つかりませんでした。
wp_insert_posts()
のこの部分はそれを取り除きます:
if ( ! empty( $postarr['meta_input'] ) ) {
foreach ( $postarr['meta_input'] as $field => $value ) {
update_post_meta( $post_ID, $field, $value );
}
}
投稿メタフィールドがupdate_post_meta()
でどのように更新/追加されるかを見るところです。
これがmeta_input
のインライン説明です。
投稿メタキーによってキー設定された投稿メタ値の配列。デフォルトは空です。
これはWordPress 4.4で追加され、関連チケット #20451 詳細については/をご覧ください。
メタキー_test
の前にアンダースコアを使用すると、ポスト編集画面の カスタムフィールド メタボックスからそれが隠されることに注意してください。
私がやり方はスラグではなくterm_idを経由することで、うまくいきます:
//insert Art items into database
$arr = array('item 1', 'item 2');
// $arr = array('art item 1', 'art item 2');
foreach ($arr as $a) {
wp_insert_post(array(
//essentials
//'ID' => 1131,
'post_author' => 1,
'post_title' => $a,
'post_type' => 'post',
'post_content' => 'Something...',
'post_status' => 'publish',
'post_name' => 'post name',
'meta_input' => array( //(array) Array of post meta values keyed by their post meta key. Default empty.
'city' => '',// 'name' => $post['name']
'country' => ''// 'city' => $post['city']
),
'tax_input' => array(
'category' => array(33,32), //id numbers work, slugs tend to be ignored !!!
'post_tag' => array('one', 'two') //for tags slugs seem to work
),//(array) Array of taxonomy terms keyed by their taxonomy name. Default empty. Equivalent to calling wp_set_post_terms() / wp_set_object_terms()
//'tags_input' => array('una', 'trei'), //(array) Array of tag names, slugs, or IDs. Default empty. Equivalent to calling wp_set_post_tags().
), true);
}