Вопрос или проблема
Мне нужно перечислить все категории slug из таксономии portfolio_category.
Вот так:
the_terms( get_the_ID(), 'portfolio_category', '', ', ' );
Это возвращает категории из одного портфолио. Я хочу вернуть только slug этого.
Вы можете попробовать следующий код
$term = get_term( get_the_ID(), 'portfolio_category');
$slug = $term->slug;
echo $slug;
Получить термины, прикрепленные к записи
$post_terms = get_the_terms(get_the_ID(), 'portfolio_category');
if( is_array($post_terms) ) {
$post_terms = array_reduce($post_terms, function($carry, $item){
$carry[] = $item->slug;
return $carry;
}, []);
echo implode(', ', $post_terms);
}
Получить все термины
Чтобы получить все термины из данной таксономии, используйте функцию get_terms
. Здесь вы найдете информацию о принимаемых аргументах.
С версии WP 4.5:
$portfolio_terms = get_terms([
'taxonomy' => 'portfolio_category',
'hide_empty' => false,
'fields' => 'id=>slug',
'orderby' => 'slug',
]);
if( is_array($portfolio_terms) )
echo implode(', ', $portfolio_terms);
До версии WP 4.5:
$portfolio_terms = get_terms('portfolio_category', [
'hide_empty' => false,
'fields' => 'id=>slug',
'orderby' => 'slug',
]);
if( is_array($portfolio_terms) )
echo implode(', ', $portfolio_terms);
Я понял.
Я использую это:
$post_id = get_the_ID();
$term = get_the_terms( get_the_ID(), 'portfolio_category');
foreach($term as $simples){
echo $simples->slug;
}
Ответ или решение
Чтобы перечислить все слаги (slug) категорий из таксономии portfolio_category
в WordPress, вы можете использовать несколько подходов. Важно понимать, что различия в коде могут быть вызваны версией WordPress, однако общий принцип остается неизменным.
Шаги для получения слагов категорий
-
Получение категорий для текущей записи:
Если вам нужно получить слаги категорий, присоединенных к определенной записи, вы можете воспользоваться функциейget_the_terms()
. Это позволяет получить все термины из указанной таксономии для текущего поста. Вот пример кода, который это выполняет:$post_id = get_the_ID(); $terms = get_the_terms($post_id, 'portfolio_category'); if ($terms && !is_wp_error($terms)) { foreach ($terms as $term) { echo $term->slug . ', '; } }
В этом коде:
get_the_ID()
возвращает ID текущей записи.get_the_terms()
получает термины для указанной таксономии.- Если термины успешно получены и нет ошибок, мы перебираем их и выводим слаги.
-
Получение всех категорий из таксономии:
Если ваша цель – получить все слаги категорий из таксономии без ссылки на конкретных пост, вы можете использовать функциюget_terms()
. Этот подход предоставляет полный список слагов:$portfolio_terms = get_terms([ 'taxonomy' => 'portfolio_category', 'hide_empty' => false, 'fields' => 'slug', // Здесь мы указываем, что нас интересуют только слаги 'orderby' => 'slug', ]); if ( !is_wp_error( $portfolio_terms ) && !empty( $portfolio_terms ) ) { echo implode(', ', $portfolio_terms); }
В этом случае:
hide_empty => false
позволяет получить все термины, даже если они не привязаны к записям.fields => 'slug'
ограничивает вывод только слагами категорий.
Вывод
Каждый из вышеперечисленных подходов имеет свои преимущества, и выбор метода зависит от ваших конкретных нужд. Если вам нужно отобразить слаги категорий для конкретного поста, используйте get_the_terms()
. Если же предстоит работать со всеми категориями в таксономии, разумнее воспользоваться get_terms()
.
Следуя этому руководству, вы сможете эффективно извлекать слаги категорий из вашей таксономии portfolio_category
в WordPress.