apply_filters cu argumente multiple și multiple add_filter
Folosesc apply_filters pentru a face legătura între plugin-uri, dar am probleme cu argumentele. Există un singur argument, un array, și mai multe implementări de add_filter care corespund cu apply_filters, fiecare dintre ele pasând array-ul original și adăugând la el.
Se pare că poți pasa mai multe argumente din apply_filter, dar add_filter poate returna doar un singur argument. Este corect sau cum se gestionează argumente multiple între apelurile add_filter?
Trebuie să pas un al doilea argument care este un ID de cont, dar se pare că doar primul add_filter poate lucra cu acel argument. Planific să încapsulez ambele argumente într-un singur array și să-l pas astfel - un array cu un array ca primă valoare și un ID de utilizator ca al doilea argument.
Editat pentru a adăuga exemplu
$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, 'Eroare utilizator Plugin 1', true);
return $error;
}
add_filter('check_for_more_errors', 'error_check_2', 2, 2);
// $userid mai jos este de fapt $error returnat din error_check_1
function error_check_2($userid, $error){
$error[] = get_user_meta($userid, 'Eroare utilizator Plugin 2', true);
return $error;
}
Exemplul de mai sus nu funcționează cum mă așteptam sau am nevoie. Se pare că filtrele sunt legate în lanț, cu argumentul returnat de primul fiind pasat ca argument următorului.
Vreau ca ambele să primească variabila $id și ca variabila $error să fie augmentată ca în exemplu.

apply_filters
necesită să transmiți valoarea care trebuie filtrată în al doilea parametru al acestei funcții (după numele etichetei hook-ului)
$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, 'Eroare utilizator Plugin 1', 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, 'Eroare utilizator Plugin 2', true);
return $error;
}
