Массив не работает в фильтре?

Это не работает:

Предупреждение: in_array () ожидает, что параметр 2 будет массивом, null

$non_area_page = array(160951,160955); // This does not work add_filter( 'term_link',change_term_name , 10, 3 ); function change_term_name( $termlink, $term, $taxonomy ) { /*If on page */ if(is_page()){ $current_id = get_queried_object_id(); $current_post = get_post($current_id); $slug = $current_post->post_name; if(!in_array($current_id,$non_area_page)) // array is defined in start of code above $termlink = esc_url( add_query_arg( ['tag' => $slug], $termlink ) ); } return $termlink; } 

Ниже работает код: (Только различие – это массив не задан вне функции)

 add_filter( 'term_link',change_term_name , 10, 3 ); function change_term_name( $termlink, $term, $taxonomy ) { /*If on page */ if(is_page()){ $current_id = get_queried_object_id(); $current_post = get_post($current_id); $slug = $current_post->post_name; if(!in_array($current_id,array(160951,160955))) // directly passed array $termlink = esc_url( add_query_arg( ['tag' => $slug], $termlink ) ); } return $termlink; } 

Это связано с определением массива глобально, если да, то как мы это делаем. В WordPress, пожалуйста, предложите?

Благодаря!

Solutions Collecting From Web of "Массив не работает в фильтре?"

Вы не можете определить что-то вне функции, а затем просто попробуйте использовать ее внутри функции, не вызывая ее в функции. Это базовый PHP и как работают функции в целом.

Вы должны передать это конкретное что-то функции или определить что-то внутри функции или использовать метод для глобализации этого и затем вызвать его внутри функции

По теме «глобализация» никогда не используйте глобальные переменные для глобализации значения. WordPress уже сделал такой большой беспорядок. Глобалы – это зло, период. Если вам нужно что-то глобализовать, используйте функцию. Например

 funtion get_global_array() { // Return an array with values 1, 2 and 3 return [1, 2, 3]; } 

Теперь вы можете использовать get_global_array() где угодно, например, внутри другой функции или функции фильтрации