• Главная
  • Карта сайта
Не найдено

Get_the_terms() - элементы таксономий поста, WordPress

Опубликовано: 22.02.2018

видео get_the_terms() - элементы таксономий поста, WordPress

VideoTutorial 3 Taller Práctico de Creación de Plugins para WordPress. The Loops y Wp Query

Благодаря этой функции вы можете вы вывести все метки, которые присвоены к посту, все рубрики, которым принадлежит пост (одновременно и метки и рубрики тоже можно), а также элементы других таксономий (иногда их называют — термины ).


3 Adding custom taxonomies to a template

Также хочу обратить ваше внимание на то, что эта функция не работает непосредственно с базой данных , прежде всего она пытается получить всё необходимое из кэша WordPress.

get_the_terms ( $post , $taxonomy )
$post (целое число|объект) Объект или ID нужного нам поста, термины которого нужно получить. $taxonomy (строка|массив) Название таксономии, элементы которой будем получать, также имеется возможность указать массив из нескольких таксономий, например array('category','post_tag').

В случае, если указанного вами поста не существует, либо ему просто не присвоено элементов заданных таксономий, функция возвращает false. А также объект WP_Error при указании несуществующей таксономии.


XRP (Ripple) as a "base pair" on Binance? Get the terms straight, guys!

Выводимые термины сортируются по имени по возрастанию.

Примеры использования get_the_terms()

Как я уже писал, функция возвращает массив объектов таксономий , как с этим работать — посмотрим на примере.

Ну и как всегда начнём от простого к сложному.

1. Вывод ссылок на все метки текущего поста

// из условия понятно, что функция используется в цикле, а значит глобальная перменная $post->ID задана и содержит ID поста $termini = get_the_terms ( $post -> ID , 'post_tag' ) ; // так как функция вернула массив, то логично будет прокрутить его через foreach() foreach ( $termini as $termin ) { echo '<a href="' . get_term_link ( $termin ) . '">' . $termin -> name . '</a>' ; } /* * Также вы можете использовать: * $termin->ID - понятное дело, ID элемента * $termin->slug - ярлык элемента * $termin->term_group - значение term group * $termin->term_taxonomy_id - ID самой таксономии * $termin->taxonomy - название таксономии * $termin->description - описание элемента * $termin->parent - ID родительского элемента * $termin->count - количество содержащихся в нем постов */

Для получения URL ссылки на страницу термина, я использовал функцию get_term_link() .

2. Вывод через запятую ссылок на термины, которые присвоены к посту

Основная проблема это, вы не поверите, запятые, то есть если мы будем просто выводить элементы как в первом примере и добавим запятую после </a>, то на конце будет всегда оставаться лишняя запятая, а она нам совсем ни к чему.

// переменная $post в данном случае - объект поста $termini = get_the_terms ( $post , array ( 'category' ,'post_tag' ,'ваша_произвольная_таксономия' ) ) ; // проверяем, что $termini не равно false, и не является объектом WP_Error if ( $termini && ! is_wp_error ( $termini ) ) { // все полученные элементы по ходу цикла мы будем класть в этот массив $termini_massiv = array ( ) ; foreach ( $termini as $termin ) { // добавление элемента в массив $termini_massiv [ ] = '<a href="' . get_term_link ( $termin ) . '" title="Перейти к ' . esc_attr ( $termin -> name ) . '">' . $termin -> name . '</a>' ; } // на данном этапе у нас имеется массив $termini_massiv, содержащий ссылки на все нужные термины // используя функцию PHP join(), объединим элементы массива в строку, в качестве разделителя используем запятую с пробелом $termini_a_hrefs = join ( ", " , $termini_massiv ) ; // осталось только вывести блок ссылок echo '<div>Теги: <span>' . $termini_a_hrefs . '</span></div>' ; }

Фильтры

У функции есть только один фильтр, который и совпадает с её названием — get_the_terms.

get_the_terms

Позволяет изменить список терминов, полученных в результате действия функции. Появился в версии WP 3.1.0

function get_the_terms_filter_cb ( $terms , $post_id , $taxonomies ) { /* * $terms - результат функции, либо массив терминов, либо false, либо WP_Error * $post_id - ID поста (именно ID, здесь уже объекта не может быть) * $taxonomies - название таксономии, либо массив из нескольких названий */ // к примеру мы можем сделать так, чтобы для поста с определенным ID термины не выводились if ( $post_id == 341 ) { return false ; } } add_filter ( 'get_the_terms' , 'get_the_terms_filter_cb' , 10 , 3 ) ;
Новости
Провайдеры:
  • 08.09.2015

    Batyevka.NET предоставляет услуги доступа к сети Интернет на территории Соломенского района г. Киева.Наша миссия —... 
    Читать полностью

  • 08.09.2015
    IPNET

    Компания IPNET — это крупнейший оператор и технологический лидер на рынке телекоммуникаций Киева. Мы предоставляем... 
    Читать полностью

  • 08.09.2015
    Boryspil.Net

    Интернет-провайдер «Boryspil.net» начал свою работу в 2008 году и на данный момент является одним из крупнейших поставщиков... 
    Читать полностью

  • 08.09.2015
    4OKNET

    Наша компания работает в сфере телекоммуникационных услуг, а именно — предоставлении доступа в сеть интернет.Уже... 
    Читать полностью

  • 08.09.2015
    Телегруп

    ДП «Телегруп-Украина» – IT-компания с 15-летним опытом работы на рынке телекоммуникационных услуг, а также официальный... 
    Читать полностью

  • 08.09.2015
    Софтлинк

    Высокая скоростьМы являемся участником Украинского центра обмена трафиком (UA — IX) с включением 10 Гбит / сек... 
    Читать полностью

rss