Я продолжаю заниматься переделкой сайта Coding Robots и рожать небольшие плагины для WordPress, которые могут пригодиться в хозяйстве. Буду постить их в блог, может и вам окажутся полезными.

Мне нужно выводить на странице (Page в WordPress) несколько последних заметок из блога, и чтобы для этого не приходилось менять шаблог. Я написал плагин-фильтр CR Recent Posts.

Работает таким образом: прямо в содержимом записи (Post) или страницы (Page) пишете:

[POSTS количество_заголовков]

или

[POSTS количество_заголовков имя_или_slug_категории]

Например, чтобы вывести двенадцать последних заголовков блога, пишете [POSTS 12], и получаете примерно такое:

Чтобы вывести последние 5 заметок из категории "Mémoires" (у которой slug — короткое имя для ссылки — memoires), используйте [POST 5 memoires] или [POST 5 Mémoires].

Скачать cr_recent_posts.zip (766 байтов)

Установка как обычно: распакуйте, загрузите cr_recent_posts.php в wp-content/plugins/ и активируйте в админке.

Обновление (31/10): Версия 1.1:

  • Исправлены названия функций для избежания возможных конфликтов с другими плагинами.
  • Убран ненужный захват вывода.

Качать по той же ссылке.

Alex Parkhomenko 2008-10-27 10:08

Дмитрий, я тут для одного из сайтов чуть-чуть переделал Similar Posts, чтобы он работал с русским языком, добавив простой stemming из открытого источника. Хочется дать сообществу, а руки не доходят. Не нужно Вам?

Roland Chanishvily 2008-10-29 15:08

Дим, get_titles - плохое имя для функции, очень очевидно. Значит будут конфликты с другими плагами.

И хорошо-бы покешить результат этой функции. Про файловый кеш в WP я писал тут - http://www.chanishvili.org/wp-cache251/

Roland: точно. Функцию брал из неплагина, который сейчас на сайте использую, поэтому забыл переименовать. Исправил.

Насчет кэша -- в смысле, отдельно писать свой кэш? Мне это не надо, у меня WP-Super-Cache.

А у кого не стоит -- разница между 13 и 14 запросами небольшая.

BOB 2008-11-14 15:08

всё хорошо, кроме того что зачем дублировать те посты которые и так уже видны на данной страницы? было бы хорошо получить 12-ть последних постов..которых не видно на главной!!

BOB: Делалось это для того, чтобы выводить последние посты на страницах, а не в постах.

Денис 2009-05-02 00:09

Здравствуйте. Не могу разобраться как публиковать посты на специально созданные подстраницы сайта? Например "О нас", или "литература". Перерыл весь интернет.

То, что тебе нужно, называется "категории", а не "подстраницы".

Денис 2009-05-02 13:09

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

Денис, страницы - это именнно "статичные" страницы, а не разделы сайта. Тебе нужны категории. Публикуешь пост в категорию x - получаешь на страничке категории x твой пост. Например, /category/programmirovanie

Можешь в настройках убрать "category" и тогда будет example.com/programmirovanie

Денис 2009-05-02 13:09

Спасибо, буду разбираться. Категории отличаются от рубрик? У меня нигде нет слова категории в админке)

Да, в русской версии это называется "рубрики".

SPA 2009-06-10 20:09

Плагин не работает если хочется разместить несколько лент на одной странице/посте. Ниже преведена обновленная функция.

function cr_recent_posts($content)

{

$regex = "/\[POSTS (\d+)[ ]?(.+)?\]/";

if (preg_match_all($regex, $content, $matches, PREG_SET_ORDER)) {

for ($i = 0; $i < count($matches); $i++)

$content = str_replace($matches[$i][0], cr_recent_posts_get_titles($matches[$i][1], $matches[$i][2]), $content);

}

return $content;

}