在ADD_ACTION挂钩删除_COMMENT上遇到困难-有什么想法吗?

时间:2012-10-23 作者:vanarie

我试图在删除注释时运行一个函数。这需要hooking into "delete_comment" if I\'m not mistaken.

理论上,这应该是一个插件,所以当你删除评论时,它会给我发电子邮件。但当我安装并激活它时,当我删除一条评论时,什么都不会发生。我将电子邮件功能硬编码为ajax-actions.php 这是可行的,但我认为,如果可能的话,想法是在插件文件中包含所有函数。我错过了什么?我是不是错过了do_action 在某处

add_action( \'delete_comment\',  \'do_something\', 10 ,1);  

function do_something($comment_id)  {
    mail("[email protected]", "$comment_id","$comment_id");
}
注:如果我require() 插件文件和调用do_something() 从…起/wp-admin/includes/ajax-actions.php, 它起作用了。。。

function wp_ajax_delete_comment() {
    ...
    if ( isset($_POST[\'trash\']) && 1 == $_POST[\'trash\'] ) {
        if ( \'trash\' == $status )
            wp_die( time() );

        // BEGIN INSERT
        require_once( plugin-file.php\' );
        do_something($comment->comment_ID); // THIS WORKS FINE
        // END INSERT

        $r = wp_trash_comment( $comment->comment_ID );
    }
    comment_to_post($comment->comment_ID);
    ...
}
是的wp-admin/includes/ajax-actions.php 不是常规WP安装的一部分,也不在您可以连接的范围内?

2 个回复
SO网友:darrinb

除非你路过$force_deletetrue 呼叫时wp_delete_comment(), 这个delete_comment 钩子不会开火。这是因为WordPress调用wp_trash_comment() 在开始wp_delete_comment() 如果$force_delete 未设置true.

尝试连接到trash_comment 行动挂钩:

function _dbdb_delete_comment( $comment_id ){
    $filter = current_filter();
    var_dump( $filter );
    var_dump( $comment_id );
    wp_die( __FUNCTION__ );
 }

add_action(\'delete_comment\', \'_dbdb_delete_comment\' );
add_action(\'trash_comment\', \'_dbdb_delete_comment\' );
我将其添加到主题的函数文件中,并在Chrome开发工具中查看了我的网络响应选项卡。我通过在Admin中的Comments屏幕删除(破坏)一条评论进行了测试。它按预期工作。

返回的筛选器为trash_comment.

SO网友:dmarges

我只是想对此发表评论,但我不能发表评论。。。

我会尝试以下几点:

通过输出到debug或屏幕,确保您实际上进入了“do\\u something”功能。

另一件事是将优先级(本例中为10)设置为较低的值,以便首先执行。

最后,这可能会首先被破坏,在这种情况下,您可以尝试trash\\u注释挂钩,看看是否有效。

我希望这有帮助!

结束

相关推荐

Comments deactivated

我无法对新文章发表评论(否add comment 链接可用)。我使用Wordpress 3.4。我检查了讨论属性,并将其设置为允许客人对文章发表评论其他(相关)选项均未选中,因为我安装了一些插件,所以感觉评论不可用。但我尝试停用一些,但没有成功地再次激活评论。建议?