在COMMENT_POST上使用HAS_FILTER

时间:2016-03-31 作者:Dudo1985

我连接到comment form(如果用户登录,则在comment\\u form\\u logged\\u in\\u后;如果未登录,则在comment\\u form\\u before\\u字段前),以添加2个字段(评级和标题)。

这些字段可以是必填字段,也可以不保存注释。这些字段不会出现在评论回复中,或者如果没有为某个帖子或页面启用审阅,则这些字段不会出现在评论回复中。

如果这些字段是必需的,我必须检查comment\\u post(就在保存注释之前)是否已运行过滤器,如果不只是在没有任何comment\\u meta的情况下保存注释。

问题是如果我尝试使用

has_filter(\'comment_form_before_fields\', \'my_function_to_check\'); 
当我钩住comment\\u post时,它总是返回FALSE。

例如,如果我试图显示

var_dump(has_filter(\'comment_form_before_fields\', \'my_function_to_check\')) 
在comment\\u text filter上,它可以工作。

我该怎么做?

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

您正在添加上的操作comment_form_before_fields 在里面comment_form_logged_in_after. 后者仅在用户登录时调用,前者仅在用户未登录时调用。

在WordPress初始化后,您可以随时添加WordPress操作和过滤器。如果要在插件中添加操作,请将其添加到init 甚至在代码第一次执行时(即不是在动作上,而是直接在插件中执行)。

这样,操作会立即添加,并在需要调用时调用。

相关推荐

为什么NAV_MENU_css_CLASS不能与Apply_Filters一起使用?

我试图将css类添加到导航项中。记录的函数调用WordPress docs 是apply_filters( \'nav_menu_css_class\', string[] $classes, WP_Post $item, stdClass $args, int $depth ) 但我尝试在函数中添加以下内容。“我的孩子”主题中的php不起作用。apply_filters(\'nav_menu_css_class\', [\'nav-item\']); 但在函数中添加以下内容。php工作正