我有一些代码,它可以获取一些$\\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,其中包含创建帖子的上述代码。
所以我的问题是,为什么它要创建两次帖子(不应该的时候,我该如何修复它?
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\',
);
否则,问题将出现在发布变量的表单中。也许它被重定向并提交了两次,或者类似的东西。