Как я могу перечислить все категории слагов?

Вопрос или проблема

Мне нужно перечислить все категории 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, однако общий принцип остается неизменным.

Шаги для получения слагов категорий

  1. Получение категорий для текущей записи:
    Если вам нужно получить слаги категорий, присоединенных к определенной записи, вы можете воспользоваться функцией 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() получает термины для указанной таксономии.
    • Если термины успешно получены и нет ошибок, мы перебираем их и выводим слаги.
  2. Получение всех категорий из таксономии:
    Если ваша цель – получить все слаги категорий из таксономии без ссылки на конкретных пост, вы можете использовать функцию 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.

Оцените материал
Добавить комментарий

Капча загружается...