Обещал, значится, вот и пишу. Если кто-то ожидает “откровений”, то думаю несколько напрасно, но для общего развития людям, интересующимся CMS WordPress и желающим идти в ногу со временем, ознакомиться стоит.
Многих людей останавливает от перехода на WordPress 2.3 сам процесс апгрейда до новой версии, и я вполне их понимаю, потому что сталкивался с “кривыми” апдейтами, когда приходилось править “напильником” кодировки или наблюдать округлившиеся глаза после “преобразования категорий в тэги” и фразу “Эээ… а как это сделать обратно?”.
Поэтому, если уж обновляетесь, то делайте это правильно, а, если есть возможность, попросите людей знающих. Они это сделают и быстро, и качественно, а то ведь можно и так конвертнуть базу, что “и” и “ш” пропадут и обратно их уже не получить.
Ну а теперь к теме поста. Первым делом определимся с тем, что у нас реально нового появилось в WordPress 2.3 относительно тем: 1. Тэги, 1а. Облако тэгов, 2. Несколько Deprecated тэгов и их новые аналоги.
Пройдёмся по порядку.
1.Тэги.
Да-да, теперь у нас есть встроенные тэги (ура-ура!), а так же несколько тэгов-разметки для работы с ними:
the_tags - выводит все тэги, назначенные посту, используется внутри Loop.
Синтакис простой: the_tags(’текст ДО’, ‘разделитель МЕЖДУ тэгами’, ‘текст ПОСЛЕ’).
Примеры из кодекса:
the_tags(’Метки:’, ‘, ‘, ‘<br />’); - выведет текст “Метки:”, список тэгов через запятую, а потом перейдёт на новую строку.
Или вот код, выводящий тэги в виде ненумерованного списка the_tags(’<ul><li>’,'</li><li>’,'</li></ul>’);
get_the_tags - функция возвращает (заметьте, не выводит, а только лишь возвращает) список всех тэгов, назначенных посту, в виде массива объектов. А вы уже с ним можете делать что хотите, т.е. формировать какие угодно конструкции и вводить проверки, работая с каждым тэгом в отдельности. Работает только в Loop.
Вот пример того, как выводить тэги в виде картинок, с соответствии с названием (стоит понимать, что картинку нужно положить в папку ДО применения тэга):
term_id);
echo '<a href="' . $link . '" rel="tag">'
.'<img src="http://example.com/images/'
.$tag->name .'.jpg" alt="'
. $tag->name . '" /></a>';
}
}?>
Всё просто, во второй строке мы сохраняем в переменную posttags все тэги данного поста, в третьей проверяем попался ли нам хоть 1 тэг (вот, кстати, и ещё одно применение get_the_tags() - проверка на существование тэгов, пример будет чуть позже), в четвёртой строке начинаем выдёргивать по очереди все тэги и с 5 по 9 строку выводим картинку в ссылке.
В принципе строки с 6 по 9 можно объединить в одну, это я чтобы в блоге за края не уезжало.
А вот этот коротенький код будет выводить тэги только тогда, когда они есть. Желательно использовать в том случае, если вы обновляли свой блог с более ранней (<2.3) версии и не успели "пометить" все посты, в таком случае пользователь не будет удивлён строчкой "Метки:" и пустым пространством за ним.
Ну и чтобы закончить с get_the_tags(), вот список параметров, которые можно получить через $tag->параметр:
- term_id - id тэга
- name - имя
- slug - сокращение, сгенеренное из имени. Если вы используете RusToLat, то генериться он будет в транслите.
- count - общее количество раз, которые тэг встречался в блоге.
single_tag_title - функция выводит/передаёт в переменную, заголовок страницы тэга, т.е. той, которая будет доступна при просмотре всех постов с определенной меткой (/tag/wordpress). Я кончено могу и ошибаться, но это 100% аналог тэга single_cat_title, причём, если вы применяете последний, то он адекватно будет выводить и заголовки для тэгов, а не только категорий.
1а. Облако Тэгов
До меня уже Максим подробно описал работу с облаком тэгов, поэтому просто процитирую его:
Для того, чтобы вывести облако меток, например в сайдбаре нужно использовать функцию wp_tag_cloud(). Функция принимает следующие аргументы (указаны значения по-умолчанию):
- ’smallest’ => 8 (минимальный размер шрифта)
- ‘largest’ => 22 (максимальный размер шрифта)
- ‘unit’ => ‘pt’ (единицы измерения)
- ‘number’ => 45 (количество меток в облаке)
- ‘format’ => ‘flat’ (разделитель: flat - пробел, list - список, array - массив)
- ‘orderby’ => ‘name’ (сортировка: name - по имени, count - количеству записей)
- ‘order’ => ‘ASC’ (порядок сортировки: ASC - прямой, DESC - обратный)
- ‘exclude’ => ” (исключить метки, указываются через запятую)
- ‘include’ => ” (включить метки, указываются через запятую)
Полезность для работы с тэгами.
Если кто ещё не знает о существовании такого мега полезного плагина как Simple Tags, то могу только… посоветовать его немедленно скачать и установить! Так же не забываем благодарить тов. Лекактуса за качественную локализацию и своевременные обновления.
Что может плагин (взято у Лекактуса):
Simple Tags - это ПРЕВОСХОДНЫЙ инструмент для управления вашими метками WP 2.3.
Он был написан со следующей философией: лучше производительность, больше безопасность и преподнесение новых функций!
- угадывает метки при вводе и подставляет из существующих
- автоматические подходящие метки для записи
- управление метками (переименование,удаление объединение, поиск и добавление меток, редактирование коротких ссылок меток)
- список непомеченных страниц/записей
- массовое редактирование меток
- возможность добавлять метки в страницы (не только записи) и включение их в результаты поиска по меткам
- связанные записи по общим меткам
- возможность добавлять связанные записи в RSS
- динамические облака меток с раскрашиванием в виджетах
- метки внутри заголовка блога
- поддержка встраиваемых меток ([tags]tag1, tag2[/tags]) для совместимости со старыми записями, где они были заданы таким способом
- Автоматическая вставка меток а записи (опционально, без редактирования шаблона). А также на выбор включение их только на блоге/в rss или в оба места сразу
О том, как всё это настраивать, написано ОЧЕНЬ подробно на странице плагина.
А ещё я советую вам пролистать блог Лекактуса на наличие кучи полезных плагинов и подписаться на рсс, чтобы следить за их обновлениями.
Deprecated тэги/функции и их новые аналоги
Небольшое отступление перед тем, как перейти непосредственно к самим тэгам. Если вы не знаете что, такое Deprecated (нежелательные) элементы в программировании, то в кратком виде статья с wikipedia:
Часть программы или метод, обозначенный как deprecated, являются сомнительными, и использование их в дальнейшем необоснованно. Эта часть работает в текущей версии ПО, однако может вызывать сообщение об ошибке в качестве предупреждения. Это служит для предупреждения пользователя о том, что данная часть кода может быть удалена в следующих резлизах программы.
Основной причиной объявления части кода (функций, методов, классов) как deprecated является желание улучшать код, и, при этом, со временем избавляться от устаревших подходов. Оставление старого кода наряду с новым приводило бы к неоправданному разрастанию программного продукта, что усложняло бы его поддержку, изучение и использование. В то же время, просто удалять устаревшие части кода нежелательно, так как это нарушит обратную совместимость для пользователей данного ПО.
Короче, никто не гарантирует, что те тэги/функции, которые были помечены deprecated после релиза WordPress 2.3, вообще будут работать, а уж тем более каждая новая версия (а 2.4 уже вот-вот будет доступен) увеличивает шанс, что тэги будут выдавать ошибку или работать не верно. Поэтому просто-напросто, нужно просмотреть свою тему, найти все вхождения “нежелательных” тэгов и поменять их на новые.
Тэги работы с ссылками из блогролла
get_links_list - вывод всех пунктов блогролла в виде не нумерованного списка.
wp_get_links - выводит ссылки из определенной категории блогролла, в виде списка.
get_links - настраиваемое отображение ссылок из блогролла.
На смену этим тэгам-разметки пришла (причём ещё в 2.1 версии, но запретили их только сейчас) функция wp_list_bookmarks(), которая делает всё тоже самое, только лучше.
Если использовать wp_list_bookmarks() без параметров, то на выходе получим список ссылок из блогролла, разбитые по категориям, отсортированные по имени, с картинкой, если она указана; так же в ссылке будет описание в title, взятое из соответствующего поля; рейтинг указан не будет.
Понятное дело, что параметров уйма:
- categorize - разбивать ли ссылки по принадлежности категории? 1 - Да, 0 - Нет.
- category - ID категорий через запятую, которые нужно отображать.
- category_name - тоже самое, что и category, но указываются имена категорий.
- category_orderby - по какому полю сортировать категории. name - имя (по-умолчанию) или id.
- category_order - порядок сортировки по предыдущему параметру. ASС и DESC соответственно.
- title_li - указываем текст, который будет выведен перед всеми ссылками, если параметр categorize=0. По-умолчанию выводится “Bookmarks”, но если указать пустое значение (title_li=), то ничего выведено не будет, в том числе и <ul>, и </ul>.
- title_before и title_after - два параметра определяющие обрамление описания (decription) категорий, при categorize=1. По-умолчанию обрамляются заголовком второго уровня (<h2></h2>). Если меняете один из этих параметров, то не забудьте заменить и второй.
- show_private - параметр определяющий, можно ли отображать “приватные” ссылки. Если установлено значение 1, то игнорируются админские настройки и выводят даже личные ссылки.
- include и exclude - позволяют точно указывать, какие ссылки (по ID) показывать/не показывать.
- orderby - это уже сортировка ссылок, а не категорий, тут вариантов больше: id, url, name, target (”Назначение” в русской версии), description (описание), owner (владелец ссылки, т.е. тот кто её добавил), rating, updated (дата последних изменений), rel (”Отношение к ссылке”), notes (”Заметки”), rss, length (сортировка в зависимости от длинны ), rand (в случайном порядке).
- order - порядок сортировки по предыдущему параметру. ASС и DESC соответственно.
- limit - количество ссылок, которые будут показаны. Параметр -1 отобразит все ссылки, удовлетворяющие остальным параметрам, он же и стоит по-умолчанию.
- before, after, category_before, category_after - обрамление каждой ссылки и каждой категории (не описания, как в случае с title_before и title_after). По умолчанию в обоих случаях стоят <li>, и </li>, причём в <li> категории дописывается соответствующий ей id и class.
- between - параметр, определяющий разделитель, между ссылкой/изображением и соответствующим описанием, по умолчанию стоит перевод на новую строку (’\n’).
- show_images - показывать ли изображение, если оно указано в соответствующем поле. 1 - Да, 0 - Нет.
- show_description - показывать описание к ссылке или нет.
- show_rating - отображать ли рейтинг.
- show_updated - указывать ли дату и время последнего обновления.
- hide_invisible - выводить ли ссылки помеченные как “невидимые”? В данном случае 1 - Нет, 0 - Да.
- echo - выводить ли сразу в шаблон или просто вернуть значение в переменную (чтобы ещё мучать при помощи PHP). 1 - Да, 0 - Нет.
Фуф, осилили? Ну, тогда для самых стойких небольшой пример - код выводит ссылки из рубрики ID=2, используя при этом картинки, обрамленные в и без описания. В добавок всё отсортированно по URL ссылки.
&after=&show_images=1&show_description=0&orderby=url');
?>
Ну что же, вроде основные моменты в адаптации темы под WordPress 2.3.x я описал, остальное в ваших руках.
Если что-то осталось непонятным или после прочтения возникли вопросы, то не стесняемся и спрашиваем в комментариях. Хотелось бы узнать, полезно ли будет описать остальные Deprecated тэги и их аналоги, для тех, кто переходит с 2.0.x на 2.1 и выше?
Желаю успешного, а главное безглючного перехода на WordPress 2.3.