Человек-Хэмингуэй - live cam since 1974

Archive for August, 2013

Циклическая перелинковка через Амброзит

Sunday, August 25th, 2013

У циклической перелинковки в Wordpress через плагин Амброзит, о котором я написал вчера, есть один недостаток - у него предпоследние посты ссылаются только на то, что осталось до конца, то есть цикл начинается только в самом последнем.

Только самый последний пост начинает забирать ссылки с начала. В принципе, это можно исправить и самому, но для меня это неприоритетно. Кольцо все равно будет работать.

Циклическая перелинковка в Wordpress

Saturday, August 24th, 2013

По умолчанию в Wordpress есть функции next_post_link и previous_post_link, которые выводят в шаблоне темы ссылки на следующий и предыдущий пост. Это здорово, но что, если хочется сделать полноценную циклическую перелинковку? То есть, чтобы последний пост ссылался на самый первый?

Сегодня для этих целей нашёл простое и относительно малозатратное решение - плагин Ambrosite Next/Previous Post Link Plus. Он одним файлом, что добавляет плюсов. Я люблю, когда плагины одним файлом - потому что каждый дополнительный файл в плагине - это дополнительная нагрузка, дополнительное обращение к файловой системе.

А ещё однофайловые плагины довольно просто допиливать вручную и оптимизировать. Кстати, базовая оптимизация однофайловых плагинов - это их копирование в один PHP-файл - этакий мультиплагин ручной сборки. Я это часто использую, потому что, как я уже сказал, каждое обращение к файловой системе - это довольно дорогое действие и если плагины одного типа (скажем, обработка контента, отдаваемого пользователю), то лучше их делать сразу в одном файле. Но я отвлёкся.

Так вот, этот Амброзит активируешь и затем в шаблоне темы в нужном месте, после поста, а можно и до - ставишь так

next_post_link_plus(’order_by=post_date&in_same_cat=1&num_results=3&loop=1&ex_posts=’.$LastID);

Что это значит? Это означает, что на странице будут
- выведены ССЫЛКИ на посты, следующие после этого поста (функция next_post_link_plus)
- отсортированные по дате (order_by=post_date)
- в той же категории (in_same_cat=1)
- количеством 3 штуки (num_results=3)
- в случае, если следующих постов не хватит - будут взяты самые первые (loop=1)
- за исключением текущего поста (ex_posts=’.$LastID)

Последний параметр я использовал только для того, чтобы в рубрике с очень малым количеством постов не было ссылки из этого же поста на тот же пост. К примеру, в рубрике всего три поста, а у меня задано выводить три следующих - естественно, что исчерпав список следующих, плагинчик начнёт брать сначала и возьмёт этот же пост. Чтобы этого не было, в ex_posts надо передать его собственный ID.

$LastID - это моя переменная для обозначения iD текущего поста, не подставляйте код как есть. В принципе, можете вообще exposts не использовать, если посты в рубриках прибывают - самоциклическая ссылка на себя же вылечится сама.

Собственно, всё. Отмечу лишь, что это решение я взял, потому что плагин YARRP, который советовал Пузат
- оказался гораздо более сложным в плане допиливания
- не гарантирует цикличности, он просто подключает “подходящие посты” в конце

А Амброзит создаёт настоящую цикличность, причем релевантность и количество постов очень хорошо настраивается через кучу параметров, которые описываются на странице разработчика.

Юзайте его, это лучшее простое решение для настоящих циклических ссылок, что я нашел сейчас. Можно делать циклические ссылки по авторам, по категориям, по тегам - и комбинировать это в одном посте, создавая не одно, а множество колец.

PS: а ещё он может показывать превьюхи к постам. Не, это маст-хэв однозначный.