我希望这个插件只创建标题为“Test Post”的帖子,如果它还不存在的话。出于某种原因,当我激活插件时,它总是创建帖子。即使在创建帖子后,似乎get_page_by_title('Test Post')
始终为false。有人可以解释一下原因吗?
<?php
/* Plugin Name: Create Test Post */
function create_post(){
if(get_page_by_title('Test Post')){
return;
}
$my_post = array(
'post_title' => 'Test Post',
'post_content' => 'This is a test post',
'post_status' => 'publish'
);
wp_insert_post($my_post);
} // end create_post
register_activation_hook(__FILE__, create_post);
答案 0 :(得分:0)
函数get_page_by_title()只能在页面上使用,而不能在没有设置帖子类型参数的情况下使用。
这将为该函数设置适当的参数。如果&#39;发布&#39;不起作用尝试使用&#39;帖子&#39;。
此功能的完整文档可在此处找到。 https://developer.wordpress.org/reference/functions/get_page_by_title/
function create_post(){
$prev_post = get_page_by_title('Test Post', 'OBJECT', 'post');
if ($prev_post != NULL) {
$prev_post_status = get_post_status( $prev_post->ID );
}
if (!isset($prev_post_status) || !in_array($prev_post_status, array('trash', 'published')) ) {
$my_post = array(
'post_title' => 'Test Post',
'post_content' => 'This is a test post',
'post_status' => 'publish'
);
wp_insert_post($my_post);
}
} // end create_post
register_activation_hook(__FILE__, create_post);