Показать все слаги wp_get_post_terms

14 мар. 2014 г., 18:54:01
Просмотры: 24.4K
Голосов: 1

Я использую следующий код для отображения слагов моей пользовательской таксономии. Однако он показывает только первую категорию, а не все связанные категории. Я знаю, что это довольно просто и связано с [0], но я не могу понять, как это изменить.

// Получаем все термины для поста
$getslugid = wp_get_post_terms( $post->ID, 'opd_taggallery' ); 
// Получаем только первый слаг
$getslug = $getslugid [0]->slug;
echo $getslug;
0
Все ответы на вопрос 3
4

Основная функция WordPress wp_list_pluck() должна значительно упростить эту задачу.

$getslugid = wp_get_post_terms( $post->ID, 'opd_taggallery' ); 
$slugs = implode(', ',wp_list_pluck($getslugid,'slug'));
echo $slugs;
14 мар. 2014 г. 19:49:01
Комментарии

+1, даже не знал об этой функции. Хотя она также использует foreach (с точки зрения производительности), я все же предпочитаю свое решение, так как у меня есть точный контроль и я могу использовать несколько полей объекта.

fischi fischi
14 мар. 2014 г. 19:57:39

Да, с точки зрения производительности... вероятно, разницы немного. Это просто удобный сокращенный вариант, если вам нужно только одно значение.

s_ha_dum s_ha_dum
14 мар. 2014 г. 20:21:23

@s_ha_dum Не знал о wp_list_pluck(), спасибо.

Nypam Nypam
27 авг. 2017 г. 11:31:27

@s_ha_dum То же самое. Не слышал о функции wp_list_pluck. Спасение :)

melvin melvin
5 июл. 2019 г. 15:18:32
0

Это скорее вопрос по PHP, но решение простое — вам нужно использовать цикл foreach для $getslug, потому что вы просто выводите slug первой таксономии.

Функция wp_get_post_terms() возвращает не один объект, а массив объектов. Вы правы насчёт [0], это указывает на то, что вы проверяете первую запись в этом массиве.

Ваша функция должна выглядеть примерно так:

$getslugid = wp_get_post_terms( $post->ID, 'opd_taggallery' ); 
foreach( $getslugid as $thisslug ) {

    echo $thisslug->slug . ' '; // Добавлен пробел между слагами с помощью . ' '

}
14 мар. 2014 г. 19:15:37
0

В новых версиях WordPress появилась возможность напрямую запрашивать только ярлыки таксономий. Я думаю, это стало доступно с введением класса WP_Term_Query в WordPress версии 4.6.0.

$slugs = wp_get_post_terms( $post->ID, 'opd_taggallery', array( 
    'fields' => 'id=>slug',
) );
echo implode( " ", $slugs );
26 янв. 2017 г. 00:24:44