wordpress wp_insert_post&;wp_更新_发布
我想从我的wordpress网站前端创建一个帖子 当人们添加具有相同帖子标题的帖子时,我希望该帖子得到更新,而不是创建新帖子 我有以下资料:wordpress wp_insert_post&;wp_更新_发布,wordpress,Wordpress,我想从我的wordpress网站前端创建一个帖子 当人们添加具有相同帖子标题的帖子时,我希望该帖子得到更新,而不是创建新帖子 我有以下资料: if (!get_page_by_title($post_title, 'OBJECT', 'post') ){ $my_post = array( 'post_title' => $post_title, 'post_content' => $post_content, 'post_status' => 'pu
if (!get_page_by_title($post_title, 'OBJECT', 'post') ){
$my_post = array(
'post_title' => $post_title,
'post_content' => $post_content,
'post_status' => 'publish',
'post_author' => $post_author,
'post_category' => $post_categories
);
wp_insert_post( $my_post );
}
else {
$page = get_page_by_title($post_title);
$page_id = $page->ID;
$my_post = array(
'ID' => $page_id,
'post_title' => $post_title,
'post_content' => $post_content,
'post_status' => 'publish',
'post_author' => $post_author,
'post_category' => $post_categories
);
wp_update_post( $my_post );
}
在文章标题相同之前,以上方法都很有效。它仍然会在数据库中重复,甚至不会考虑“否则”语句。
上面的内容看起来正常吗,还是我做错了什么?如果您使用
空
检查数组会怎么样
请注意,即使帖子被丢弃,它也会获取数据库中的第一个帖子/页面项。
$check_title=get_page_by_title($post_title, 'OBJECT', 'post');
//also var_dump($check_title) for testing only
if (empty($check_title) ){
$my_post = array(
'post_title' => $post_title,
'post_content' => $post_content,
'post_status' => 'publish',
'post_author' => $post_author,
'post_category' => $post_categories
);
wp_insert_post( $my_post );
}
else {
$my_post = array(
'ID' => $check_title->ID,
'post_title' => $post_title,
'post_content' => $post_content,
'post_status' => 'publish',
'post_author' => $post_author,
'post_category' => $post_categories
);
wp_update_post( $my_post );
}
对于自定义帖子类型,请将第一行更改为:
$check_title=get_page_by_title($post_title, 'OBJECT', 'my_custom_post_type');