wp_insert_post多次运行

时间:2017-09-08 08:35:18

标签: php wordpress

我对WordPress开发不太熟悉,基本上我有一个单独的PHP脚本,我不能将表单数据从它传递到WP插件,插件将通过$ _GET左右获取该数据,将其作为新帖子插入WP。

我在插件中尝试了以下代码,但是会导致有关“调用未定义函数is_user_loggedin”的错误。

$post = array(
            'post_title' => "test title",
            'post_content' => "test content",
            'post_date' => 0,
            'post_date_gmt' => 0,
            'post_status' => 'publish',
            'post_author' => 1,
            'post_category' => array(1)
    );
wp_insert_post($post);

然后我找到了一个解决方案,将代码包装在一个函数中并使用“init”钩子执行它。

function insert_post(){
    $post = array(
            'post_title' => "test title",
            'post_content' => "test content",
            'post_date' => 0,
            'post_date_gmt' => 0,
            'post_status' => 'publish',
            'post_author' => 1,
            'post_category' => array(1)
    );
    wp_insert_post($post);
}
add_action('init', 'insert_post');

同样,这会插入帖子,但它会不断地一遍又一遍地插入相同的帖子,而不是仅在我的插件被调用时插入一次。

任何帮助或解决方案都将不胜感激,谢谢。

1 个答案:

答案 0 :(得分:0)

我不使用Wordpress。但当我看着 Wordpress WP Insert Post Guidance

您不应该将代码包装在函数中。 请仔细检查您是否已包含所有必需的包含/所需文件以调用wp_insert

EX:

// Gather post data.
$my_post = array(
    'post_title'    => 'My post',
    'post_content'  => 'This is my post.',
    'post_status'   => 'publish',
    'post_author'   => 1,
    'post_category' => array( 8,39 )
);

// Insert the post into the database.
wp_insert_post( $my_post );

  

wp_insert_post()通过sanitize_post()传递数据,它本身处理所有必要的清理和验证(kses等)。

根据wordpress指南