插件正在创建两次帖子

时间:2013-01-31 作者:Sweepster

我有一些代码,它可以获取一些$\\u POST数据并循环使用。在循环中,我将$\\u POST数据存储在变量中,并使用这些变量创建一个新的POST。当我用完$\\u POST数据时,循环结束。

所有这些都有效。我甚至在循环过程中输出变量,这样我就知道循环是有效的,并且我可以在我的网站上看到创建的帖子。

问题是,虽然输出的变量只出现一次(正如应该的那样),但我看到代码创建的所有帖子都翻了一番。

以下是post数据:

Array ( [scrape] => Array ( [0] => Array ( [title] => Sample 1   [url] => http://google.com [1] => Array ( [title] => Sample 2   [url] => http://ebay.com [2] => Array ( [title] => Sample 3   [url] => http://test.com [3] => Array ( [title] => Sample 4   [url] => http://codingrocks.com ) ) ) 
这是我的代码:

$insDate = date(\'Y-m-d H:i:s\');
$count = count($_POST[\'scrape\']);
$i=0;
while($i<$count){
    $title = $_POST[\'scrape\'][$i][\'title\'];
    $url = $_POST[\'scrape\'][$i][\'url\'];
    echo "Title: ".$title."<br>";
    echo "URL: ".$url."<br>";
    $i++;
    echo "<br>";

// Above variables echoed to show what is being sent - they appear once (as the should) per post
// Below is the code to create the new posts. The posts are being created TWICE (should be once)

    $my_post = array(
        \'post_title\'    => $title,
        \'post_date\'     => $insDate,
        \'post_content\'  => \'$url\',
        \'post_status\'   => \'publish\',
        \'post_type\'     => \'post\',
    );

    $the_post_id = wp_insert_post( $my_post );
我确实看到了这篇帖子:Plugin Development: Wordpress processes twice on post update. How to skip process on the first?

但我没有使用自定义函数来发布,我使用的是wordpress的内置函数,这意味着这里提供的解决方案不适用于我的案例。。。还是这样?

流程:

我刮取一个页面并将数据存储到变量中。然后将这些变量放入用户可以编辑的表单中。该表单由字段组成,用于scraper可以找到的尽可能多的帖子变量。当用户提交表单时,上述$\\u POST数据将发送到parsed。php,其中包含创建帖子的上述代码。

所以我的问题是,为什么它要创建两次帖子(不应该的时候,我该如何修复它?

2 个回复
最合适的回答,由SO网友:Sweepster 整理而成

找到了解决方案。通过将我的代码包装在内

if ( true !== DOING_CRON && true !== DOING_AJAX ) {

}
这些帖子现在只发布了一次,这是应该的。

SO网友:david.binda

代码不会在本地安装中添加两次检查的帖子。

其中有错误:

$my_post = array(
    \'post_title\'    => $title,
    \'post_date\'     => $insDate,
    \'post_content\'  => \'$url\',
    \'post_status\'   => \'public\',
    \'post_type\'     => \'post\',
);
应该是

$my_post = array(
    \'post_title\'    => $title,
    \'post_date\'     => $insDate,
    \'post_content\'  => $url,
    \'post_status\'   => \'publish\',
    \'post_type\'     => \'post\',
);
否则,问题将出现在发布变量的表单中。也许它被重定向并提交了两次,或者类似的东西。

结束

相关推荐

Routing 'fake' sub sub posts

我目前有以下自定义永久链接规则:/%类别%/%postname%/我希望/%category%/%postname%/%sometext%显示与/%category%/%postname%/-从那里,我将使用PHP或jQuery在页面上显示不同的内容。例如:/关于我们/团队/mike以显示/关于我们/团队页面,然后我将用jQuery突出显示“mike的简历”。谢谢