WordPress有条件的帖子创建

时间:2016-10-25 19:08:00

标签: wordpress function

我希望这个插件只创建标题为“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);

1 个答案:

答案 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);