web-dev-qa-db-ja.com

Functions.phpからプラグインに情報を渡す

functions.phpからプラグインに情報を渡すための最善の方法は何ですか?

passデータの一部from彼らのfunctions.phpファイルtomy plugin。 (それはどんなデータでもかまいません。私が確認できるものです。変数の値でも、変数が設定されていたり、関数が定義されていたという事実でもかまいません。)

私はここで見つけた提案を試みました:

外部からプラグイン変数に値を渡す

そのコードを逐語的に接続しました。

あなたのプラグインで:

 $value = 0;
 $value = apply_filter('get_value_from_function', $value);

それからfunctions.php

add_filter('get_value_from_function', 'my_special_value_treatment', 10, 1);
function my_special_value_treatment ($value){
    return 1;
}

しかし、それはエラーになります。

致命的なエラー:93行目の/pathtomyplugin/my-plugin-name/my-plugin-name.phpにある未定義の関数apply_filter()を呼び出す

それがなぜ失敗するのか理解できません。これを行うための最良の方法は何ですか?

この追加で編集されました:

それをapply_filters()に変更した後、これはまだ起こります...私のプラグインで:

$value = 0;
$value = apply_filters('get_value_from_function', $value);
if ($value===0) {
    $test_info = 'not_passed';
} else {
    $test_info = 'passed';
};
// $test_info is not_passed
1
hommealone

テーマの前にプラグインがロードされます。つまり、あなたのapply_filtersには実際のコールバックは登録されません。代わりに、テーマがロードされた後にいつかあなたのapply_filtersを呼び出す必要があります。このようなもの:

/* Your plugin's file: */

add_action( 'init', 'my_lovely_funky_filters' );

function my_lovely_funky_filters() {
    /* Fire our callbacks */
    $value = 0;
    $value = apply_filters( 'get_value_from_function', $value );

    /* Check your $value now */
    /* echo "<pre>{$value}</pre>"; */
}

/* Your functions.php file */

add_filter( 'get_value_from_function', 'my_special_value_treatment', 10, 1 );
function my_special_value_treatment( $value ) {
    /* A little more interesting */
    return (int)$value + 1;
}
2
webtoure

これは正しい方法です - 関数がapply_filterではなくapply_filtersであることを除いて。だからあなたのエラーです。

0
vancoder