WordPress, рубрики и облако тэгов

WordPress, рубрики и облако тэгов

Те из вас, друзья мои, кто уже занимался сайтами на вордпрессе, наверняка сталкивались с тем, как в нём реализованы облака тэгов. И всё-таки я попробую в этой статье перечислить некоторые возможности их использования. Оговорюсь, в моей реализации вордпресса (сейчас это — русская версия 4.0) виджет по-умолчанию называется «Облако меток», хотя в английской версии это привычные всем «Tag Cloud».

Вариант первый — виджет в сайдбаре

Позвольте мне не вдаваться подробно в то, как на сайтах регистрируются сайдбары. Эта тема выходит за рамки данной статьи. Будем считать, что вы или уже знаете как его зарегистрировать, или используете у себя на сайте тему от сторонних разработчиков, в которой он уже есть. Я не считаю нужным сейчас об этом писать ещё и потому, что в сети и так полно сайтов, где это объясняется. Впрочем, возможно, это тема одной из будущих статей.

Приведу в пример собственный сайт.

На иллюстрации видно, что в теме уже есть сайдбар и называется он «Боковая колонка 1». Достаточно блок «Облако меток» перетащить мышкой в «Боковую колонку 1» и поместить его выше или ниже среди уже установленных там виджетов. Затем лишь останется указать заголовок вашему виджету и выбрать один из вариантов доступных таксономий. Этим виджетом, вообще говоря можно, разместить в сайдбаре или облако тэгов, или список рубрик вашего сайта.

Плюсом данного варианта является простота и наглядность его использования.

Вариант второй — функция the_widget( )

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

Первый же параметр — $widget — строка, позволяет указать какой именно виджет мы хотим разместить — список стандартных виджетов вордпресса достаточно обширен:

WP_Widget_Archives — Помесячный архив, WP_Widget_Calendar — Календарь, WP_Widget_Categories — Рубрики, WP_Widget_Meta — Мета, WP_Widget_Pages — Страницы, WP_Widget_Recent_Comments — Свежие комментарии, WP_Widget_Recent_Posts — Свежие записи, WP_Widget_RSS — RSS, WP_Widget_Search — Поиск, WP_Widget_Tag_Cloud — Облако меток, WP_Widget_Text — Текст, WP_Nav_Menu_Widget — Произвольное меню.

В нашем случае мы будем использовать вариант «WP_Widget_Tag_Cloud». Позвольте мне не рассказывать в этой статье об остальных виджетах и их параметрах. В интернете полно сайтов, начиная с Кодекса вордпресса, где перечислены все стандартные функции и передаваемые им аргументы.

В переменной $instance — массив или строка, можно передать заголовок для виджета и таксономию (всё-таки облако тегов или рубрики сайта нужно выводить).

В переменной $args — массив или строка, можно передать оформление заголовка виджета и кое-какие параметры ещё. На них я тоже не буду подробно останавливаться.

Стоит для наглядности привести пример использования этой функции для вывода облака тегов:

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

О минусах

Минусов у обоих вариантов только два — облако тегов выводится целиком и ограничивается 45 самыми популярными тегами.

Сначала поясню второе. Если окажется, что у вас на сайте будет очень много различных тегов, то виджет, вызванный любым из двух вариантов покажет только 45 самых популярных из них — те, которыми помечено наибольшее количество ваших статей. Остальные, менее популярные теги, просто не будут показываться в общем списке до тех пор, пока помеченных ими статей, не станет достаточно много. Согласен, не у всех так много тегов и кому-то может даже понравиться такая соревновательность. Кроме того, порывшись в движке, всегда можно найти файл, где указано это ограничение и рамки несколько раздвинуть — просто сменить 45 на любое удобное вам число. У этого метода в свою очередь есть только один минус. При обновлении движка, вордпресс сотрёт ваши изменения и снова сделает ограничение равным сорока пяти.

Теперь я поясню, что значит для меня «облако тегов выводится целиком». Возможно, для кого-то это совсем не минус. В самом деле, если вы используете движок вордпресс только для ведения собственного блога, то и фиг бы с ним, общее облако для любых рубрик вашего сайта вам не помешает. Но на своей домашней страничке я веду по крайней мере два раздела, где использую теги. Это раздел статей «Пишу» и фотоальбом «Снимаю». (Позже добавилась ещё рубрика «Видеоролики»).

Вариант третий — своё облако тегов для каждой рубрики

С ростом количества тегов мне расхотелось смешивать теги разных рубрик (разделов сайта), в одно общее облако. Появилось желание реализовать его так, чтобы у каждой рубрики показаны были только собственные теги. Из поисков информации по этой теме я понял, что данным вопросом озадачивался не я один. Собственно статейка эта и затеяна ради этого третьего варианта облака тегов. Прежде всего, потратив какое-то время, я нашел в интернете написанную кем-то функцию (автор мне не известен, к сожалению), которая как раз позволяла вывести теги только для конкретной рубрики. Ликовал я не долго, ибо, хотя функция и работала как было заявлено, но выводила она теги единым стилем и размером. Мне же, избалованному тем, как работает стандартный виджет, хотелось, чтобы более популярные теги выводились более крупным шрифтом, менее популярные — мелким. В итоге, функцию я переписал и доработал так, что теперь она во-первых: выводит облако тегов только для указанной рубрики; во-вторых: в скобочках после названия тега показано количество статей, этим тегом отмеченных; и, наконец, в-третьих: Теги в зависимости от популярности выводятся разными размерами шрифта.

Далее приведена функция целиком.

Саму функцию необходимо разместить в файле functions.php вашей темы. Позвольте мне не описывать подробно как именно она работает. Те из вас, кто разбирается в php и не один день работает с сайтами на вордпрессе, наверное разберутся сами, кроме того, функция порядком откомментирована. Добавлю лишь три ключевых момента:

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

Обратите внимание на выделенную строчку. Это шаг, с которым увеличивается шрифт с ростом популярности тегов. В моём случае — плюс 1. Если окажется, что минимальный размер шрифта у вас меньше моего, а тегов имеется всего пять или семь, возможно, увеличения размера шрифта на единицу вам будет не достаточно. Кроме того, в качестве единицы измерения я использовал пиксели, поэтому мой шаг растёт на целое число. Если указывать размеры шрифта в процентах, например, то увеличивать шаг можно будет и дробно.

И, наконец, третье. Саму функцию можно вызывать в любом месте вашей темы. Я делаю это примерно так:

Само собой, в css описаны стили для класса tagClud и заголовка h3. Функция была немного переписана так, чтобы её можно было использовать в любых шаблонах, не зная заранее ни ID текущей категории, ни того факта, а есть ли вообще у этой категории теги?

Используйте на здоровье, если кому-то пригодится. Не бойтесь экспериментировать и что-то менять.

📎📎📎📎📎📎📎📎📎📎