WordPress在调用wp_UPDATE_COMMENT()后无响应

时间:2014-11-01 作者:Blastercloud

在管理面板的“编辑评论”页面中,由于某种原因,在我单击“更新”后,编辑页面进入无限循环/加载(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我不知道,有人能测试一下代码并告诉我它是否有效吗?

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

wp_update_comment 触发edit_comment 行动(source), 您正在创建一个无限循环。

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__ );
需要注意的是,只需要上述变体中的一种。

结束

相关推荐

Batch approve comments

Akismet发疯了,向垃圾邮件发送了数百条评论。现在,我必须手动将每条评论标记为“非垃圾邮件”,然后手动将所有评论从待处理状态移至已批准状态。有没有更有效的方法?