如何在Wordpress上使用isset函数声明变量

问题描述

我在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;

}

此行代码wordpress生成错误警告或通知

$ 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);

或在函数开头。

谢谢。