Меню

WordPress вывести метки категории

Как вывести все категории или все метки (а также другие таксономии) из сети WordPress Multisite одним циклом

network_get_terms()

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

Самое главное отличие этих функций в том, что get_terms() возвращает рубрики/метки/термины с текущего блога, а network_get_terms() — со всех блогов сети в одном цикле.

Параметры функции

Хотел бы я написать, что все параметры идентичны параметрам функции get_terms(), но к сожалению это не совсем так, поэтому придется остановиться на них подробнее.

$network_taxonomies Укажите нужные вам таксономии. Этот параметр также поддерживает возможность указать массив array(‘post_tag’, ‘category’) . $network_args number Стандартно — указываем число — количество элементов, которое нужно получить. offset Число — количество элементов, которые нужно пропустить от начала. Например если указать 2 , то функция начнет получать элементы начиная с 3-го по порядку. Работает только если указан параметр number . include, exclude Укажите в этих параметрах значения локальных ID одного или нескольких элементов (через массив), которые вы хотите включить, исключить (соответственно) из вывода.

Если одновременно указаны оба параметра, то учитывается только include . parent Укажите локальный ID элемента таксономии, дочерние элементы (первого уровня) которого вам нужны.

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

Если указать 0 , то будут выведены родительские элементы 1-го уровня. $slug Функция ищет по всем блогам сети элементы таксономий с указанным ярлыком. Также можно указать несколько элементов в виде массива. $name Возвращает все элементы таксономий сети с указанным названием. Чувствительности к регистру нет. Можно задать массив из нескольких элементов. $name__like, $description__like В этом параметре достаточно указать лишь часть названия, описания (соответственно). $search Функция будет искать заданную строку в названиях и ярлыках элементов таксономий сети. orderby Параметры сортировки, count — по количеству постов, name — по названию (по умолчанию), slug — по ярлыку, description — по описанию, include — по порядку, указанному в соответствующем параметре (см. выше), id — по значению локального ID. order Порядок сортировки — ASC по возрастанию (по умолчанию) или DESC по убыванию. fields Формат возвращаемого результата функции:

  • 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

Описывать каждый фильтр я сейчас не стану, так как пост не об этом. А вот примеры мы рассмотрим.

Пример 1. Выводим метки со всех блогов WP Multisite

Как вы наверное заметили, в этом примере не хватает одной важной вещи — то есть у нас есть названия меток, есть их ID, но нет самого важного, ссылок.

На самом деле этот момент я тоже предусмотрел и сделал функцию network_get_term_link() , которая является аналогом стандартной вордпрессовской get_term_link().

Пример 2. Выводим все рубрики с блогов сети WordPress Multisite со ссылками

Представляю вам функцию network_get_term_link() , которая по сути является аналогом get_term_link(), но работает в сети WordPress Multisite.

Впервые познакомился с WordPress в 2009 году. Организатор и спикер на конференциях WordCamp. Преподаватель в школе Нетология.

Если вам нужна помощь с сайтом или разработка с нуля на WordPress / WooCommerce — пишите. Я и моя команда будем рады вам помочь!

Источник

WordPress: выводим список всех тегов (меток) в рубрике

В одном из заказов на разработку шаблона для WordPress понадобилось выполнить нестандартную задачу — в рубрике вывести список всех тегов из статей, которые в ней находятся.

Как обычно в таких случаях, поискал решение в Интернете. Нашлось несколько вариантов. Что-то не работало, что-то было затратно по ресурсам сервера (берутся все статьи рубрики и из них циклом вытягиваются теги с дальнейшим удалением дубликатов). Но следующий оказался оптимальным и с минимумом кода, благодаря имеющимся в WordPress функциям для работы с терминами, которыми и являются элементы в таксономиях «Рубрика» и «Метка (тег)».

Итак, в шаблон рубрики (это может быть файл index.php, или archive.php, или category.php в зависимости от структуры вашего шаблона) необходимо вставить следующий код:

Если необходимо вывести этот список в любом месте шаблона, то замените get_query_var( ‘cat’ ) на ID рубрики (узнать его можно одним способов: так или так).

Стоит отметить, что данные берутся только для текущей рубрики, без учета подрубрик. Чтобы вывести теги с учетом подрубрик всех уровней вложенности, в вышеуказанном коде необходимо заменить вторую строку ( $post_ids = . ) на этот код:

Смотрите также

  • Возвращаем столбик «ID» в админку WordPress 16 комментариев
  • WordPress: Выводим блоки рубрик с сортировкой по дате последнего поста 55 комментариев
  • Загрузка части контента на WordPress с помощью AJAX 198 комментариев
  • Постраничная навигация в комментариях WordPress без плагина 71 комментарий

Комментарии (5)

В моем случае подобный код вывалит фатальную ошибку базы данных, так как длина массива, переданного в констркцию IN() в недрах wp_get_object_terms() имеет ограничения. А записей на сайте более 2х миллионов.

Меня спасал хитрый JOIN в кастомном запросе.

Просто возникает вопрос: «Зачем?». Зачем выводить теги в рубрике — это ведь и дополнительная нагрузка на сервер (хоть и небольшая, используя твой способ) и целесообразность этого вызывает сомнения.

Заказчику так нужно было. Я тоже не вижу в этом смысла.

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

Спасибо. Работает. Как раз искал готовое решение, чтоб быстро внедрить. А нужно это, когда занимаешься seo-оптимизацией тегов и они осмысленны на сайте, а не просто ради того, чтобы были.

Источник

wp_get_post_tags() WP 2.3

Получает список меток указанного поста в виде массива.

Возвращает

  • array( WP_Term, WP_Term ) — массив объектов WP_Term
  • array() — пустой массив если меток не найдено.
  • WP_Error — object WP_Error если таксономия post_tag не существует.

Использование

Переписывает аргументы по умолчанию. Весь список аргументов смотрите в описании функции wp_get_object_terms().

По умолчанию в $args устанавливается параметр fields=all (получить все поля термина). Другие значения этого аргумента: names (получать только названия терминов) и ids (только ID терминов ).

По умолчанию: array()

Примеры

#1. Получим метки текущего поста

Допустим пост имеет следующие метки: tag2, tag5 и tag6 :

#2. Получим список ID меток текущего поста

В списке будут только ID меток (поле ids):

Список изменений

Код wp_get_post_tags() wp get post tags WP 5.8.1

Cвязанные функции

Для записей

Здравствуйте, вопрос уже по сути в теме, но всё же напишу подробней.

Как вывести все имена меток записи известно, а как вывести имя, допустим, метки, которая идёт первой к записи, порядку они какому-то подчиняются?

Суть в чём?
Этот код выводит похожие записи для метки, которая прописана для записи первой:

Этот код отличающийся одним символом (вместо 0 — 1) выводит похожие записи для второй метки:

Так вот можно вывести имена самих меток по отдельности, сначала первой, потом второй в шаблоне?

Чтобы это выглядело так:
Похожие записи с меткой [1]
перечисление записей

Похожие записи с меткой [2]
перечисление записей

Вроде, проблема то не проблема, но гуглить уже устал, как имена категорий отдельно вывести все знают, а имена меток — нет. Может я просто не знаю что искать. Заранее благодарен.

Источник

the_tags() WP 2.3.0

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

Нужно использовать внутри Цикла WordPress.

Возвращает

null . Выводит HTML код на экран.

Использование

Примеры

#1. Ссылки на метки поста

Выведем, через запятую, ссылки на метки, которые есть у поста. Перед ссылками будет текст по умолчанию «Метки: «:

#2. Изменим начальный текст и разделитель между метками:

#3. Выведем метки в списке

    :

Список изменений

Код the_tags() the tags WP 5.8.1

Cвязанные функции

loop (Цикл WP)

Для записей

Записи: посты, страницы, .

Здравствуйте, а как можно сделать так, чтобы слово «Метки» в первом » не размещалось, а то оно по умолчанию стоит? Спасибо.

Просто нужно поставить две одинарные кавычки, вот так the_tags(»). В статье есть переменная $before — она за это и отвечает.

Необходимо, в теле читаемого поста, вывести заголовки двух других постов — связанных с читаемым — метками.
Есть варианты ?

Привет. Как то делал урок про шорткоды и там подобный пример был.

Спасибо Юрию Белотицкому (blog.portal.kharkov.ua) за помощь.
Вот код, если кому будет нужен:

Добрый день, подскажите пожалуйста, можно ли вывести метку обычным текстом, не ссылой? Или же данным тэгом только ссылка выводится?

Подскажите пожалуйста как сделать вывод тегов (метки) термы произвольного типа записи?

, где ‘services’ — таксономия в виде категорий
, где ‘mylabel’ — таксономия в виде тегов (метки)
, где ‘uslugi’ — созданный тип записи.

Создал новый тип записи, затем файл таксономии (taxonomy-services.php) в котором выводится списком (тут весь код с описанием и вопросом) все наименования относящиеся к конкретной терме.

Однако, если сделать файл таксономии в виде taxonomy-mylabel.php, то при переходе на любую созданную терму содержащейся в ‘mylabel’ (как тег(метки)) выводит все записи относящиеся к конкретной терме (при коде в этом файле равнозначном для архивной страницы).

Вообщем бьюсь уже давно и ни как не получается сделать вывод с учётом тегов (метки) этой термы.

Источник

Метки WordPress, как с ними работать

Вступление

Давайте разберемся, зачем нужны метки WordPress, как с ними работать, нужно ли метки WordPress индексировать и сколько меток нужно для продвижения сайта. Статья дополнена 08-11-2019, способами массового добавления меток.

Что такое метки WordPress

Метками WordPress, могут выступать ключевые слова статьи с плотностью от 1 до 5% или/и слова выбранные администратором, для навигационной и поисковой связи статьи с другими статьями сайта.

Создание меток WordPress

Создаются метки для каждой статьи, на странице редактора. Для создания меток при написании/редактировании статьи в отдельной форме «Метки» нужно ввести метки статьи, через запятую.

Если по каким, либо причинам вы не видите форму Метки на странице редактирования, вверху страницы есть кнопка «Настройки экрана» с выезжающем меню, в нём отметьте чекбокс «Метки».

Управление метками WordPress

Управление метками сайта осуществляется на странице Записи→Метки. Метки можно удалять, добавлять, давать меткам описание.

Таксономия по меткам

Функции WordPress позволяют выводить метки к постам в нужном месте, чаще внизу или вверху поста в виде перечисления через запятую. Функция WordPress обеспечивающая вывод меток статьи (поста), [wp_get_post_tags]. Использование функции:

Как спрятать метки от поисковиков

Может показаться странным, название этого радела. Зачем прятать метки от поисковиков? Ответить на этот вопрос однозначно не получается. Попробую пояснить. Для начала посмотрим, в каком виде метки попадают в поисковую выдачу. В выдачу метка попадает вместе с анонсом статьи.

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

Предположим, у вас в статье 10 меток. Получаем, в выдаче появиться 10 одинаковых цитат этой статьи в 10 разных архивах меток. И хоть они под разными URL, получим 10 дублей по контенту в выдаче, они совсем не нужны. Поэтому, некоторые веб-мастера рекомендуют «прятать» от поисковиков метки WordPress. Я метки не закрываю, а переделываю шаблон, чтобы на главную страницу брался анонс, а в архивы рубрики тегов бралась цитата. Об этом тут.

Закрыть метки от ботов

1. Закрыть метки можно двумя способами. Проще всего в файле robots.txt, который, должен быть в корне вашего сайта. В файле robots.txt вписывается директива запрещающая (Dissalow) поисковикам сканировать страницы с tag в URL:

2. Второй вариант, использовать плагин SEO оптимизации, который в своём функционале будет иметь инструмент закрытия тегов от поисковиков. Я использую, seo плагин Yoast SEO ( https://ru.wordpress.org/plugins/wordpress-seo/ ) в котором одной кнопкой закроете от поисковиков, всё что нужно.

Что мы этим достигнем? Уменьшим дубли частей статей, в выдаче, одновременно снизив количество страниц в поиске и как следствие, количество посетителей сайта. Не радующий результат.

Теперь, прикинем, что грозит, если оставить метки в поиске. Если у вас 100 статей, у каждой статьи в среднем 5 меток, то это 500 страниц в поиске. Не слабо! А как же дубли частей статей? За дубли, возможны штрафные санкции Яндекс. И какова же вероятность штрафа, как и всё у Яндекс не предсказуемо, может, будут, может, нет.

К чему я это? Да в том, то и дело, что вам самим придется принимать решение закрывать метки от поисковиков или нет. Приведу пример. Я на одном сайте закрыл метки от поиска. Через три дня посетителей на сайте снизилось на 1000-1200 единиц, что составило 30-40 %. Совсем не хорошо. Тем более что никакими санкциями от поисковиков даже не «пахло». Поэтому, я почистил неиспользуемые теги, добавил к некоторым статьям цитаты, чтобы снизить дублирование, добавил к меткам уникальные описания и открыл метки для поисковиков. Через пару недель всё восстановилось.

Как удалить неиспользуемые метки

В предыдущем абзаце я упомянул о чистке меток и удалении неиспользуемых меток. Расскажу, как это делать.

Способ 1: Удалить неиспользуемые метки из панели администрирования

В консоли сайта откройте вкладку Внешний вид →Метки .

В таблице с метками, вы видите столбец «Прикрепленные записи». Так вот, в таблице не должно быть меток со значением ноль «0» в этом столбце. Отмечаете не прикрепленные метки и удаляете их (Действие→ Удалить →Применить).

Способ 2: Удалить неиспользуемые метки из базы данных

Чтобы посмотреть в базе данных WordPress неиспользуемые метки , то есть метки, не прикрепленные ни к одной статье, нужно в phpMyAdmin сделать следующий SQL запрос:

[wp_] замените на префикс вашей базы данных.

На скриншотах ниже, вы можете видеть результаты этого SQL запроса до и после того как метки WordPress были очищены.

Способ 3: Использовать плагин очистки (оптимизации) сайта

Для удобства работы установите плагин чистки сайта, их часто называют плагины технической оптимизации. С их помощью можно провести комплексную очистку сайта, в том числе неиспользуемые метки. Я использую плагин: Optimize Database after Deleting Revisions ( https://ru.wordpress.org/plugins/rvg-optimize-database/ ), очень рекомендую.

Массовое добавление меток WordPress

Плагины для массового добавления меток устаревают и на сегодня (08-11-2019), я не знаю подобных плагинов проверенных автором на версии 5.2.4. Для информации это плагины:

  • Bulk Term Generator;
  • Quick Bulk Term Taxonomy Creator;
  • BulkPress.

Я массово добавляю теги по простому:

  • Составляю список меток в блокноте или в любом редакторе, перечисляю метки их через запятую. В списке могут быть сотни меток;
  • Создаю пустую, но с заголовком статью. Временно её публикую;
  • В списке постов, на ссылке «Свойства» под названием созданной статье, вставляют составленный список меток;
  • Сохраняю сделанные изменения свойств;
  • Удаляю временный пост;
  • Все метки остаются в списке меток. Описания делаются отдельно.

Источник

Читайте также:  Нужно ли чистить имбирь от кожицы перед употреблением