Wp_INSERT_POST()中的“META_INPUT”参数用来做什么?

时间:2016-01-30 作者:streel

我正在使用该功能向wordpress中插入一些帖子wp_insert_post().

我想在每篇文章中插入一些自定义字段并阅读文档我虽然使用了meta\\u 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\\u post\\u meta()来添加它们,但我仍然想知道meta\\u input参数的用途,因为插入post后我在数据库中搜索了“testx1”,但找不到任何结果。

2 个回复
最合适的回答,由SO网友:birgire 整理而成

本部分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:

由其post meta键设置键的post meta值数组。默认为空。

这是在WordPress 4.4中添加的,这是相关的票据#20451 了解更多信息。

请注意,在元键前面使用下划线_test 将在编辑后屏幕中的自定义字段元框中隐藏它。

SO网友:Alex DS

我这样做的方式是通过term\\u id not slug,它可以工作:

//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);   
}

相关推荐

列出分类法:如果分类法没有POST,就不要列出分类法--取决于定制的POST-META?

这可能很难解释,我不知道是否有解决办法!?我有一个名为“wr\\u event”的自定义帖子类型和一个名为“event\\u type”的分层自定义分类法。自定义帖子类型有一个元框,用于event_date 并且与此帖子类型关联的所有帖子都按以下方式排序event_date. 我在循环中有一个特殊的条件来查询event_date 已经发生了-在这种情况下,它没有显示,但只列在我的档案中。就像你可以使用wp_list_categories() 我编写了一个自定义函数,它以完全相同的方式列出所有分类术语。现在