2017-09-17 5 views
0

はシナリオです:apply_filtersに引数を渡すには?ここ

if(apply_filters('example_filter', false, $type)) { 
     // do something 
} 

私はcallback_functionから// do somethingブロックまたはパス内$typeを利用できるようにしたいです。

$type = 'select'; 
function callback_function($bool, $type) { 
    return true; 
} 
add_filter('example_filter', 'callback_function', 10, 2); 

どのように私はapply_filters範囲内のcallback_functionからarguementを渡すことができますか?

答えて

0

残念ながら、WordPressのapply_filters関数から参照変数を渡すことはできませんが、いくつかの回避策があります。あなたのコードがそれを処理するように設計されている場合、2番目のパラメータ(apply_filters呼び出しから返されるフィルタ名の次のパラメータ)は、ブール値でない値またはグローバル変数(推奨されません)に変更することができます(推奨しません):

定義:

function callback_function($type) { 

    if(/* is valid conditional */) { 
     return $type; // Default value 
    } else if (/* another valid condition */) { 
     return 'radio'; 
    } 

    // else not valid 
    return false; 
} 
add_filter('example_filter', 'callback_function', 10); 


もう一つの方法は、グローバル変数を使用することです(推奨されません):

$GLOBALS['type'] = 'select'; 
if(apply_filters('example_filter', false)) { 
    // $GLOBALS['type'] available here 
} 

定義:

function callback_function($bool) { 
    global $type; 
    $type = 'radio'; 
    return true; 
} 
add_filter('example_filter', 'callback_function', 10); 

参考:https://www.geeklab.info/2010/04/wordpress-pass-variables-by-reference-with-apply_filter/

関連する問題