我连接到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上,它可以工作。
我该怎么做?
最合适的回答,由SO网友:engelen 整理而成
您正在添加上的操作comment_form_before_fields
在里面comment_form_logged_in_after
. 后者仅在用户登录时调用,前者仅在用户未登录时调用。
在WordPress初始化后,您可以随时添加WordPress操作和过滤器。如果要在插件中添加操作,请将其添加到init
甚至在代码第一次执行时(即不是在动作上,而是直接在插件中执行)。
这样,操作会立即添加,并在需要调用时调用。