2017-09-17 6 views
0

Hier ist das Szenario:Wie Argumente an apply_filters übergeben?

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

Ich möchte $type innerhalb // do something Block machen oder von der callback_function passieren.

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

Wie kann ich das Argument von der callback_function innerhalb apply_filters Umfang passieren?

Antwort

0

Leider können Sie keine zusätzlichen Variablen zurück aus der apply_filters-Funktion in WordPress übergeben (Referenz oder nicht), es gibt jedoch einige Problemumgehungen. Wenn Ihr Code dafür ausgelegt ist, könnte Ihr zweiter Parameter (der nach dem Filternamen, der vom apply_filters-Aufruf zurückgegeben wird) in einen nicht booleschen Wert oder als globale Variable (nicht empfohlen) geändert werden:

$type = 'select'; 
if(false !== ($type = apply_filters('example_filter', false, $type)) ) { 
    // Returned $type available here (if it is not boolean false) 
} 

Definition:

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); 


Eine weitere Möglichkeit ist die globale Variablen zu verwenden (nicht empfohlen):

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

Definition:

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

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

Verwandte Themen