5

次のように使用するプラグインがありますapply_filters

$additional_fields = apply_filters('attachment_meta_add_fields', $additional_fields);

私のテーマfunctions.phpでは、次のことを行います。

function addAttachmentMeta($additionalFields) {
    return $addtionalFields;
}
add_filter( 'attachment_meta_add_fields', 'addAttachmentMeta', 1, 1 );

しかし、関数addAttachmentMetaは決して実行されません。

apply または add フィルターステートメントを変更して、それaddAttachmentMetaが呼び出されるようにするにはどうすればよいですか?

編集: これは、追加の添付ファイル メタ フィールドを追加する方法に関するチュートリアルに基づいて作成したカスタム プラグインです。ソース全体はここにあります: http://pastebin.com/7NcjDsK5 . コメントで述べたように、このプラグイン ファイルに追加のフィールドを追加できるため、これが実行され、機能していることはわかっていますが、フィルターが追加されないため、フィルターを使用することはできません。

apply_filtersステートメントの前後に var_dumps が表示されますが、指定した関数add_filterが呼び出されることはありません。

4

1 に答える 1

11

WordPress のコアが読み込まれる順序に従って、すべてのプラグインが読み込まれて実行された後に function.php が呼び出されます。

apply_filters()プラグインのが呼び出された後に実行されるようにする必要がありますadd_filter()。それ以外の場合は、フィルターが「適用」された時点で、add_filter()まだ呼び出されていません。

フックを使用して、functions.php がロードされた後にプラグインのその部分を実行することができます。add_action('after_setup_theme', 'function_name')フックを使用できます。

プラグイン ファイルの最後の 3 行を関数内にラップし、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');
于 2013-10-09T18:18:35.360 に答える