WordPress Support

Плагин WordPress "postMash" позволяет сортировать записи в блоге.

Добавлено 1 марта 2010 в категорию Плагины.

Я уже рассматривал плагины сортировки страниц, рубрик и ссылок, теперь настала очередь плагина сортировки записей. К сожалению, приличного плагина сортировки постов не нашлось, а 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

Страница плагина: [ссылка]

Рассматриваемая версия: 1.2.0 от 12.08.2009

Совместимость с версией WordPress: 2.1 и выше.