Usare apply_filters con più argomenti e più add_filter
Sto usando apply_filters
per collegare diversi plugin ma ho difficoltà con gli argomenti. C'è un argomento, un array, e diverse implementazioni di add_filter
che corrispondono ad apply_filters
, ognuna delle quali riceve l'array originale e lo modifica.
Sembra che si possano passare più argomenti da apply_filter
ma add_filter
può restituire solo un argomento. È corretto o come si gestiscono più argomenti tra le chiamate add_filter
?
Devo passare un secondo argomento che è un ID account, ma sembra che solo il primo add_filter
riesca a lavorare con quell'argomento. Penso di incapsulare entrambi gli argomenti in un unico array, quindi un array con un array come primo valore e un ID utente come secondo argomento.
Esempio aggiunto
$error = apply_filters('check_for_more_errors', $userid, $error);
add_filter('check_for_more_errors', 'error_check_1', 1, 2);
function error_check($userid, $error){
$error[] = get_user_meta($userid, 'Errore utente Plugin 1', true);
return $error;
}
add_filter('check_for_more_errors', 'error_check_2', 2, 2);
// $userid qui sotto è in realtà $error restituito da error_check_1
function error_check_2($userid, $error){
$error[] = get_user_meta($userid, 'Errore utente Plugin 2', true);
return $error;
}
Il codice sopra non funziona come mi aspetto o come ho bisogno. I filtri sembrano concatenarsi, con l'argomento restituito dal primo che viene passato come argomento al successivo.
Voglio che entrambi ricevano la variabile $id e che la variabile $error venga incrementata come nell'esempio.

apply_filters
richiede di passare il valore da filtrare nel secondo parametro di questa funzione (dopo il nome del tag dell'hook)
$error = apply_filters('check_for_more_errors', $error, $userid);
add_filter('check_for_more_errors', 'error_check_1', 1, 2);
function error_check_1($error, $userid){
$error[] = get_user_meta($userid, 'Plugin 1 user error', true);
return $error;
}
add_filter('check_for_more_errors', 'error_check_2', 2, 2);
function error_check_2($error, $userid){
$error[] = get_user_meta($userid, 'Plugin 2 user error', true);
return $error;
}
