Flector

postMash

Я уже рассматривал плагины сортировки страниц, рубрик и ссылок, теперь настала очередь плагина сортировки записей. К сожалению, приличного плагина сортировки постов не нашлось, а postMash хоть и выполняет свою работу, но по части удобства и функций он явно не дотягивает до приличного уровня. Но, как я уже сказал, других плагинов с требуемым мной набором функций нет, придется работать именно с ним. Сначала скажу зачем он мне вообще понадобился. Есть у меня в блоге прошлогодний пост, который я думаю обновить и при этом хочу, чтобы он заново попал и на главную страницу блога и в RSS ленту. Вот так сходу сможете назвать способы это реализовать, не публикуя этот пост с новой датой? Я не смог, а новую дату у статьи ставить не хочу, так как мне не нравится видеть годовалой давности комментарии у только что опубликованной статьи.

Скачиваем плагин с его домашней страницы и устанавливаем его:

1. Распаковываем архив.

2. Копируем папку postmash в /wp-content/plugins/.

3. Заходим в админку блога на вкладку "Плагины" и активируем плагин.

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

Естественно, что меня это не устроило – после каждой публикации новой статьи лезть в настройки плагина и перетаскивать новую статью в начало списка удовольствие не из приятных. Чтобы это исправить открываем файл плагина postMash.php и заменяем строчку:

60
$pageposts = $wpdb->get_results("SELECT * FROM $wpdb->posts WHERE post_type = 'post' ORDER BY menu_order");

на

60
$pageposts = $wpdb->get_results("SELECT * FROM $wpdb->posts WHERE post_type = 'post' ORDER BY menu_order DESC");

После этого заходим в "Записи\postMash" и жмем кнопку "Update". Дожидаемся появления таблички "Database Updated!". Если с первого раза она не появилась, то жмем еще раз. После этого мы видим все тот же хронологический список статей. Чтобы увидеть обратный хронологический список надо еще раз зайти в "Записи\postMash" (то есть обновить страницу). Увидели этот список, который начинается с последних опубликованных статей? Жмем опять на "Update" до появления "Database Updated!". Теперь и в блоге у вас все записи идут, начиная с последних опубликованных, то есть как до установки плагина вообще.

Вот теперь вы можете заняться непосредственно сортировкой записей. Все, что вы можете сделать это перетащить пост в новое место, а также быстро указать опубликован он или это черновик (совершенно бесполезный функционал). В этом второй большой недостаток плагина - он не предоставляет никакой возможности выбрать посты по дате или по рубрике. То есть если вам надо переместить какой-то пост из определенной рубрики так, чтобы он стал первым в этой рубрике вам надо вручную искать куда этот самый пост впихнуть, чтобы он стал первым в рубрике, но при этом не попал на главную страницу. Когда в блоге сотни статей сделать это не так просто, как кажется. Как это исправить я не знаю: попробовал плагин postMash (filtered), который содержит подобные функции, но он работает глючно - например, с ним запланированные на публикацию записи оказываются уже опубликованными с еще не наступившей датой.

Отсортировали свои записи так, что некоторые из них попали на главную страницу блога? Откройте теперь RSS ленту и убедитесь, что хотя эти посты в ней присутствуют они находятся в конце списка. По вполне понятной причине – сортировка в ленте осуществляется по дате создания поста. Следовательно, весьма сомнительно, что популярные RSS читалки вроде Google Reader покажут записи с устаревшей датой. Чтобы это обойти вы должны зайти в нужные записи и заново их опубликовать, ничего в них не меняя (не меняя даты публикации в первую очередь). Это, конечно, не изменит положение постов в RSS ленте, но это изменит дату их последней модификации (WordPress запоминает последнюю дату изменения записей), а это позволит нам чуточку исправить файл feed-rss2.php, где формируется RSS лента так, чтобы вместо даты создания поста там показывалась дата его последнего изменения. Откройте feed-rss2.php и замените строчку:

39
<pubdate><?php echo mysql2date('D, d M Y H:i:s +0000', get_post_time('Y-m-d H:i:s', true), false); ?></pubdate>

на

39
<pubdate><?php echo mysql2date('D, d M Y H:i:s +0000', get_the_modified_time('Y-m-d H:i:s', true), false); ?></pubdate>

Что в итоге после всех исправлений получилось: все записи в блоге идут в обратном хронологическом порядке (новые записи первые в списке), мы можем заново опубликовать любой старый пост первым в блоге, не меняя дату его публикации и при этом он опять будет показан в RSS-ленте. Это идеальный вариант для блогеров имитировать активность в блоге, даже если он временно блогером заброшен. А я этими исправлениями решил свою проблему с публикацией старой записи, как новой без изменения даты публикации.

PS. Деактивация плагина вернет сортировку записей по умолчанию, так что можете не бояться за испорченный порядок показа записей в блоге.

 

Автор плагина: Joel Starnes
Страница плагина: http://wordpress.org/extend/plugins/postmash/
Рассматриваемая версия: 1.2.0 от 12.08.2009
Совместимость с версией WordPress: 2.1 и выше.

Понравился пост? Подпишись на обновления по Обновления блога по RSSRSS или Обновления блога на TwitterTwitter !

Комментарии (всего 21 комментарий)
Написать комментарий

(обязательно)

(обязательно, не публикуется)

Для вставки кода используйте кнопку "Код", по умолчанию используется синтаксис подсветки языка "php", вы можете поменять его на любой другой поддерживаемый GeSHi язык, например "javascript", "css", "html4strict", "sql" и тд. Используйте предпросмотр!
 


Подписаться на уведомления без комментирования.