在管理面板的“编辑评论”页面中,由于某种原因,在我单击“更新”后,编辑页面进入无限循环/加载(Google Chrome选项卡中的微调器图标从未停止旋转)。即使在我关闭WordPress、web浏览器和IDE(我正在本地使用Microsoft WebMatrix 3)之后,我的电脑也会进行10-20分钟的“深入思考”。
使命感wp_update_comment()
这似乎是个问题,因为当我移除它时,一切都很好。当我检查数据库时,我可以看到“comment\\u type”列确实得到了更新,但我的计算机仍在深入思考,消耗资源,编辑页面进入无限加载状态。
function update_product_comment($comment_ID) {
$commentarr = [];
$commentarr[\'comment_ID\'] = $comment_ID;
$commentarr[\'comment_type\'] = \'test\';
//wp_die(var_dump($commentarr[\'comment_type\'])); <-- COMMENT_TYPE = \'TEST\', SO FAR SO GOOD!
wp_update_comment($commentarr); // <--- THE CULPRIT
}
add_action(\'edit_comment\', \'update_product_comment\');
我不知道是什么原因导致wp\\u update\\u comment()这样做,我没有安装插件,基本上是全新的WordPress安装,默认的WordPress主题,没有自定义代码。但无论我使用什么主题,同样的问题也适用。也许是WebMatrix我不知道,有人能测试一下代码并告诉我它是否有效吗?
SO网友:Nicolai Grossherr
只需删除回调函数开头的操作挂钩,以避免无限循环-为此,您可以添加:
// avoid infinite loop
remove_action( \'edit_comment\', \'update_product_comment\' );
也可以这样做:
// avoid infinite loop
remove_action( \'edit_comment\', __FUNCTION__ );
另一种变化是:
// avoid infinite loop
remove_action( current_action(), __FUNCTION__ );
需要注意的是,只需要上述变体中的一种。