如何防止wp_INSERT_POST每秒创建一个新帖子?

时间:2019-09-25 作者:bsmith

我正在尝试创建一个简单的插件,只创建一个新帖子。我写的代码每秒都会创建一篇相同的新帖子。下面是我的代码。需要添加什么才能只创建一个帖子?

<?php
/**
*@package blog-poster
*/
/*
Plugin Name: Blog Poster
Plugin URI: http://www.litliving.com
Description: This is a plugin for Litliving customers that allows for blog posts to be automatically posted.
Version: 1.0.0
Author: Ben Smith
Author URI: http://www.bengsmith.com
*/

if ( ! defined( \'ABSPATH\') ){
  die;
}


function AddThisPage() {
    global $wpdb; // Not sure if you need this, maybe

    $page = array(
        \'post_title\' => \'My post!!!\',
        \'post_content\' => \'This is my post.\',
        \'post_status\' => \'publish\',
        \'post_author\' => 1,
        \'post_type\' => \'post\',
    );

    wp_insert_post($page);

}

add_action( \'wp_insert_post\', \'AddThisPage\' );

register_activation_hook( __FILE__, \'AddThisPage\' );
?>

2 个回复
SO网友:Christian Lescuyer

您的插件根本不进行检查,例如“帖子是否已经存在?”因此,每次调用WordPress时,它都会创建一个帖子。

有一个名为WordPress heartbeat的系统,它每隔几秒钟就与服务器联系一次。每次都会调用您的插件,并创建一篇帖子。

作为参考Heartbeat doc.

SO网友:bsmith

谢谢你的回复。具有讽刺意味的是,在我发布了这篇文章之后,我找到了答案。我需要在底部创建一个if-else语句。我写信

$page_exists = get_page_by_title( $page[\'post_title\'] );

    if( $page_exists == null ) {

        $insert = wp_insert_post( $page );
        if( $insert ) {

        }
    } else {

    }

相关推荐