tub*_*035 5 php wordpress plugins wordpress-plugin
我有一个使用apply_filters这样的插件:
$additional_fields = apply_filters('attachment_meta_add_fields', $additional_fields);
Run Code Online (Sandbox Code Playgroud)
在我的主题中functions.php,我这样做:
function addAttachmentMeta($additionalFields) {
return $addtionalFields;
}
add_filter( 'attachment_meta_add_fields', 'addAttachmentMeta', 1, 1 );
Run Code Online (Sandbox Code Playgroud)
但是该功能addAttachmentMeta永远不会运行。
如何更改我的apply或添加filter语句以使其addAttachmentMeta被调用?
编辑:这是我根据有关如何添加其他附件元字段的教程编写的自定义插件。整个来源在这里:http : //pastebin.com/7NcjDsK5。正如我在评论中提到的那样,我知道它正在运行并且正在工作,因为我可以在此插件文件中添加其他字段,但是不能使用过滤器,因为未添加过滤器。
我可以在apply_filters语句之前和之后看到var_dumps ,但是我指向的函数add_filter永远不会被调用。
根据WordPress核心加载的顺序,在加载并执行所有插件后将调用function.php。
您需要确保apply_filters()插件中的会在您add_filter()调用后运行。否则,在“应用”过滤器的时候,add_filter()根本就没有被调用。
您可以做的是使用一个钩子使您的插件的一部分在functions.php加载后运行。您可以使用add_action('after_setup_theme', 'function_name')挂钩。
将插件文件的最后三行包装在一个函数中,并在functions.php运行之后执行它。
function addAttachmentMeta() {
$additional_fields = array();
$additional_fields = apply_filters('attachment_meta_add_fields', $additional_fields);
$am = new Attachment_Meta( $additional_fields );
}
add_action('after_setup_theme', 'addAttachmentMeta');
Run Code Online (Sandbox Code Playgroud)