还有一个wp_INSERT_POST无限循环。怎么啦?

时间:2013-03-18 作者:Nown

我正在编写一个插件,允许订阅用户提交自定义类型的帖子,我正试图通过快捷码实现这一功能。现在的问题是,我的代码不是插入一篇帖子,而是插入数百篇帖子,直到PHP内存耗尽。。。下面是一个复制此问题的超小型代码:

add_shortcode( \'occaz-ajouter\', \'occasion_addedit\' );

function occasion_addedit(){

    wp_insert_post(array(\'post_title\'=> \'hello\', 
                        \'post_content\'=> \'Hello everybody\',
                        \'post_author\'=>1));

    return "OK.";

}
(当然,我有一个包含[occaz Ajour]短代码的页面,当我访问这个页面时,我遇到了这个问题。)

我看到有几个人遇到过这样的无限循环,但所提供的解决方案似乎都不能解决我的问题,因为我没有使用通常解释无限循环的任何挂钩。。。有什么想法吗?

非常感谢,

不知道

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

好的,在挖掘了一段时间后,我找到了原因:Relevanssi插件在构建索引时默认会扩展每个短代码。出于某种原因,这导致我的短代码引用的函数被无限次执行。。。

因此,解决方案只是编辑relevansi设置,告诉它不要扩展短代码。。。

SO网友:revo

当一个用户使用wp\\u insert\\u post给其他用户在WordPress中插入post的能力时,问题在于用户的能力。wp\\u insert\\u post使用current\\u user\\u can方法检查给定用户是否有能力发布帖子。从那以后,我也不知道出了什么问题。但是,只有将post\\u状态设置为publish时,才会发生这种情况。如果您碰巧将publish更改为其他状态,如draft,您会发现您可以成功插入WordPress帖子,而不会出现无限循环的问题。

但我希望我的用户拥有订阅者的能力,但能够自己发布帖子。如果你像我一样,你可能想绕过对发布帖子的检查。如果您查看wp\\u insert\\u post的代码实现,您会发现大多数检查都在查找关键字publish。另一种不使用关键字publish发布帖子的方法是使用备选关键字future。

http://hungred.com/how-to/wpinsertpost-infinity-loop-problem-return-blank-page/

Update

奇怪的使用remove_action( current_filter(), __FUNCTION__ ); 在wp\\u insert\\u post之前,请重试。

结束

相关推荐