Как объявить переменную с помощью функции isset() в Wordpress

У меня есть блок php-кодов, который я поместил в functions.php на веб-сайте Wordpress, часть которого показана ниже:

add_filter('запрос', '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);

нравится:

Примечание: Неопределенная переменная: имя в /wp-content/themes/businessfinder2-child/functions.php в строке 595.

Я попытался заменить приведенную выше строку на:

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

Ни одна из вышеперечисленных замен не работает.

Очень ценю любые советы.


person daro2013    schedule 31.10.2020    source источник


Ответы (2)


$query пуст на отдельных страницах и работает только на одной странице, такой как сообщение и страница. Добавьте эту строку в начало функции, чтобы предотвратить вызов функции на домашней странице и т. д.

if(empty($query)) return $query;
person Mohammad Yousefi    schedule 31.10.2020
comment
Благодарю. Я попробовал ваш код, но та же ошибка все еще существует. Любой совет? - person daro2013; 31.10.2020
comment
измените эту строку ›› $term = get_term_by('slug', if(isset($name)) { echo '$name'; }, $tax_name); к этому ›› if(isset($name)){$term = get_term_by('slug', $name, $tax_name);} :D - person Mohammad Yousefi; 31.10.2020
comment
Привет @mohammad, спасибо. Я также пробовал это, прежде чем писать здесь о помощи; это не работает. - person daro2013; 31.10.2020

Я исправил проблему. Если у кого-то есть опыт решения подобной проблемы, просто объявите $name как глобальную переменную перед строкой ошибки следующим образом:

глобальное $имя; $term = get_term_by('slug', $name, $tax_name);

или в начале функции.

Благодарю.

person daro2013    schedule 03.11.2020