WordPress过滤器未添加

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永远不会被调用。

mus*_*oom 9

根据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)