问题描述
我在WordPress网站上的functions.PHP中放了一块PHP代码,其一部分如下所示:
add_filter('request','my_change_term_request',1,1);
函数my_change_term_request($ query){
$tax_name = 'ait-items'; // specify you taxonomy name here,it can be also 'category' or 'post_tag'
// Request for child terms differs,we should make an additional check
if( isset( $query['attachment'] ) && $query['attachment'] ) :
$include_children = true;
$name = $query['attachment'];
else:
$include_children = false;
if(isset($query['name'])){ $name = $query['name']; }
endif;
$term = get_term_by('slug',$name,$tax_name); // get the current term to make sure it exists
if (isset($name) && $term && !is_wp_error($term)): // check it here
if( $include_children ) {
unset($query['attachment']);
$parent = $term->parent;
while( $parent ) {
$parent_term = get_term( $parent,$tax_name);
$name = $parent_term->slug . '/' . $name;
$parent = $parent_term->parent;
}
} else {
unset($query['name']);
}
switch( $tax_name ):
case 'category':{
$query['category_name'] = $name; // for categories
break;
}
case 'post_tag':{
$query['tag'] = $name; // for post tags
break;
}
default:{
$query[$tax_name] = $name; // for another taxonomies
break;
}
endswitch;
endif;
return $query;
}
$ term = get_term_by('slug',$ name,$ tax_name);
喜欢:
注意:未定义的变量:第595行的/wp-content/themes/businessfinder2-child/functions.PHP中的名称
我尝试将以上行替换为:
$ term = get_term_by('slug',if(isset($ name)){echo'$ name';},$ tax_name);
OR:
$ term = get_term_by('slug',if(isset($ query ['name']))){echo“ $ name”;},$ tax_name);
以上替代方法均无效。
非常感谢任何建议。
解决方法
$ query在非单个页面中为空,它仅在单个页面(如帖子和页面)中起作用。在“函数”顶部添加此行,以防止在主页等中调用函数。
if(empty($query)) return $query;
,
我解决了这个问题。如果有人遇到过类似问题,只需在错误行之前将$ name声明为全局变量,如下所示:
全局$ name; $ term = get_term_by('slug',$ name,$ tax_name);
或在函数开头。
谢谢。