这不起作用:
警告:in\\u 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中这样做?
谢谢
最合适的回答,由SO网友:Pieter Goosen 整理而成
您不能在函数外部定义某个内容,然后在函数内部尝试使用它,而不将其调用到函数中。这是基本的PHP和函数的一般工作方式。
您需要将特定的内容传递给函数,或者在函数中定义该内容,或者使用方法将该内容全球化,然后在函数中调用它
在“全球化”主题上,永远不要使用全球变量来全球化价值。WordPress已经把事情搞得一团糟了。地球人是邪恶的,句号。如果您需要全球化某些内容,请使用函数。例如
funtion get_global_array()
{
// Return an array with values 1, 2 and 3
return [1, 2, 3];
}
您现在可以使用
get_global_array()
任何需要的地方,如另一个函数或过滤器函数内部