Когда использовать 'get_category_by_path' против 'get_term_by', чтобы получить объект категории из `get_query_var ('category_name')`?

Я хотел бы получить объект категории из названия категории, используя переменную public query category_name , через get_query_var( 'category_name' ) :

 $cat = get_query_var( 'category_name' ); 

Существуют два метода:

  1. get_category_by_path()
  2. get_term_by()

Использование get_category_by_path()

Основываясь на главном коде WordPress ( wp-includes/canonical.php ), я узнал, что сделаю так:

 $category = get_category_by_path( $cat ); 

Использование get_term_by()

Теперь, как я вижу, я также могу получить объект категории следующим образом:

 $category = get_term_by( 'slug', $cat, 'category' ); 

Получение объекта Category

Затем используйте объект категории ( $get_category переменную $get_category ) следующим образом:

 if( $category && !is_wp_error( $category ) ) { $get_category = $category; } // Just an example of what could be done if( isset($get_category) ) { echo 'Current category: ' . $get_category->name; } 

Каковы различия между этими двумя методами? Какие преимущества имеет преимущество над другим, и в каких ситуациях следует использовать вместо другого?

Solutions Collecting From Web of "Когда использовать 'get_category_by_path' против 'get_term_by', чтобы получить объект категории из `get_query_var ('category_name')`?"

Вы делаете это правильно @its_me. Последнее, get_term_by() было бы лучшим способом. На мой взгляд , поскольку, как я полагаю, get_category_by_path использует get_term_by , просто get_term_by таксономию как category .

Изменить: Как я упоминал в своем комментарии, get_category_by_path намного менее эффективен, так как он получает несколько терминов. а затем сравнивает иерархический путь. get_term_by намного лучше.