我试图在删除注释时运行一个函数。这需要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安装的一部分,也不在您可以连接的范围内?
SO网友:darrinb
除非你路过$force_delete
像true
呼叫时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
.