我不知道你在哪里找到的,wp_insert_post() can't set categories anymore
但是从WordPress Doc你可以像
// Create post object
$my_post = array(
'post_title' => 'My post',
'post_content' => 'This is my post.',
'post_status' => 'publish',
'post_author' => 1,
'post_category' => array(8,39) // id's of categories
);
// Insert the post into the database
wp_insert_post( $my_post );
Bellow 是我的一个工作示例,我在我的一个站点中使用它来由管理员动态添加新帖子,其类别名称为location
具有两个元字段,输入来自用户(我已经过滤了用户输入,但此处省略)
$category='location'; // category name for the post
$cat_ID = get_cat_ID( $category ); // need the id of 'location' category
//If it doesn't exist create new 'location' category
if($cat_ID == 0) {
$cat_name = array('cat_name' => $category);
wp_insert_category($cat_name); // add new category
}
//Get ID of category again incase a new one has been created
$new_cat_ID = get_cat_ID($category);
$my_post = array(
'post_title' => $_POST['location_name'],
'post_content' => $_POST['location_content'],
'post_status' => 'publish',
'post_author' => 1,
'post_category' => array($new_cat_ID)
);
// Insert a new post
$newpost_id=wp_insert_post($my_post);
// if post has been inserted then add post meta
if($newpost_id!=0)
{
// I've checked whether the email and phone fields are empty or not
// add both meta
add_post_meta($newpost_id, 'email', $_POST['email']);
add_post_meta($newpost_id, 'phone', $_POST['phone']);
}
另请记住,每次添加没有类别的新帖子时,都会为该WordPress
帖子设置默认类别,uncategorized
如果您没有从管理面板更改它,您可以将默认类别从更改为uncategorized
您想要的任何内容。
更新:
由于post_category
不再存在,因此您可以替换
'post_category' => array($new_cat_ID)
有以下
'tax_input' => array( 'category' => $new_cat_ID )
在上面给出的例子中。你也可以使用
$newpost_id=wp_insert_post($my_post);
wp_set_post_terms( $newpost_id, array($new_cat_ID), 'category' );
请记住,在此示例中,$new_cat_ID
已使用以下代码行找到
$new_cat_ID = get_cat_ID($category);
但也可以使用以下代码获取类别 ID
$category_name='location';
$term=get_term_by('name', $category_name, 'category');
$cat_ID = $term->term_id;
阅读有关get_term_by函数的更多信息。