Так как плагин стал пользоваться популярностью (хотя в рунете на данный момент не заинтересовал почти никого), я решил начать его дорабатывать, и первая из доработок, которую я сделал, это аналог функции get_terms() в WordPress — network_get_terms()
.
Самое главное отличие этих функций в том, что get_terms() возвращает рубрики/метки/термины с текущего блога, а network_get_terms()
— со всех блогов сети в одном цикле.
network_get_terms( $network_taxonomies, $network_args )
Хотел бы я написать, что все параметры идентичны параметрам функции get_terms(), но к сожалению это не совсем так, поэтому придется остановиться на них подробнее.
array('post_tag', 'category')
.2
, то функция начнет получать элементы начиная с 3-го по порядку. Работает только если указан параметр number
.// в этом примере исключаем рубрики, ID которых равны 1 или 2 на любом из блогов сети $network_category = network_get_terms('category', array('exclude' => array( 1, 2 ) ) );
Если одновременно указаны оба параметра, то учитывается только include
.
Действует по всем блогам сети — т.е. если вы указали ID 11, а у вас на первом блоге есть рубрика с этим ID, и на втором блоге есть, то будут возвращены дочерние элементы первого уровня вложенности обоих этих рубрик.
Если указать 0
, то будут выведены родительские элементы 1-го уровня.
count
— по количеству постов, name
— по названию (по умолчанию), slug
— по ярлыку, description
— по описанию, include
— по порядку, указанному в соответствующем параметре (см. выше), id
— по значению локального ID. ASC
по возрастанию (по умолчанию) или DESC
по убыванию.all
— массив объектов (по умолчанию),names
— массив названий,ids
— массив локальных айдишников.По сути network_get_terms()
имеет те же фильтры, что и get_terms(), но только с префиксом network_
.
get_terms() |
network_get_terms() |
---|---|
get_terms_args | network_get_terms_args |
get_terms | network_get_terms |
get_terms_orderby | network_get_terms_orderby |
list_terms_exclusions | network_list_terms_exclusions |
get_terms_fields | network_get_terms_fields |
terms_clauses | network_terms_clauses |
Описывать каждый фильтр я сейчас не стану, так как пост не об этом. А вот примеры мы рассмотрим.
$network_tags = network_get_terms('post_tag', 'orderby=name&hide_empty=0'); if($network_tags){ echo '<select>'; foreach ($network_tags as $network_tag){ echo "<option value='{$network_tag->term_id}'>{$network_tag->name}</option>"; } echo '</select>'; } /* в данном примере понятно, что $network_tag->name - название метки, $network_tag->term_id - её глобальный, уникальный ID среди всех меток сети также существуют и другие параметры: $network_tag->term_local_id - локальный ID метки внутри блога, на котором она находится $network_tag->parent - локальный ID родительского элемента $network_tag->taxonomy - название таксономии, в данном случае post_tag $network_tag->slug - ярлык метки $network_tag->blog_id - ID блога, на котором находится метка $network_tag->description - описание метки $network_tag->count - количество отмеченных ею записей */
Как вы наверное заметили, в этом примере не хватает одной важной вещи — то есть у нас есть названия меток, есть их ID, но нет самого важного, ссылок.
На самом деле этот момент я тоже предусмотрел и сделал функцию network_get_term_link()
, которая является аналогом стандартной вордпрессовской get_term_link().
Представляю вам функцию network_get_term_link()
, которая по сути является аналогом get_term_link(), но работает в сети WordPress Multisite.
network_get_term_link( $term, $taxonomy='', $blog_id=null )
network_get_terms
, в этом случае второй и третий параметр можно будет не указать.$network_cats = network_get_terms('category'); if($network_cats){ echo '<ul>'; foreach ( $network_cats as $network_cat ){ echo '<li><a href="' . network_get_term_link( $network_cat ) . '">' . $network_cat->name . '</a></li>'; } echo '</ul>'; }
Чтобы оставить комментарий, пожалуйста, зарегистрируйтесь или войдите.
В целом не плохо, да
Здравствуйте, а есть возможность вывести записи основного домена на подкаталог, может другой плагин какой то?
Добрый день Айрат,
Имеется ввиду мультисайт или вообще?
Тоже интересует аналогичный вопрос.
Необходимо выводить все посты (с миниатюрами записей) всех сайтов мультисайта - на главном сайте.
Можете рассказать как это сделать, или написать код для установки ?
Вы хотите это сделать в пределах одного цикла с сохранением порядка постов?
Чтобы посты выводились по дате добавления от новых к старым.
Спасибо.