阵列在筛选器中不起作用?

时间:2015-11-16 作者:jas

这不起作用:

警告: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中这样做?

谢谢

1 个回复
最合适的回答,由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() 任何需要的地方,如另一个函数或过滤器函数内部

相关推荐

警告:CALL_USER_FUNC_ARRAY()要求参数1是有效的回调

我创建了一个新的wordpress,没有主题,只有一个插件:GDPR WP。(我想先在空wordpress上试用这个插件,然后再将它部署到其他网站上)。所以,我第一次尝试创建函数来接受或不接受GoogleAnalytics cookie。我的函数工作正常,但在BO/FO上有一个错误:Warning: call_user_func_array() expects parameter 1 to be a valid callback, function \'cookie_GA\' not found or i