Я продолжаю заниматься переделкой сайта Coding Robots и рожать небольшие плагины для WordPress, которые могут пригодиться в хозяйстве. Буду постить их в блог, может и вам окажутся полезными.
Мне нужно выводить на странице (Page в WordPress) несколько последних заметок из блога, и чтобы для этого не приходилось менять шаблог. Я написал плагин-фильтр CR Recent Posts.
Работает таким образом: прямо в содержимом записи (Post) или страницы (Page) пишете:
[POSTS количество_заголовков]
или
[POSTS количество_заголовков имя_или_slug_категории]
Например, чтобы вывести двенадцать последних заголовков блога, пишете [POSTS 12], и получаете примерно такое:
- Mémoires 1.2.43 released Jul 8
- WordPress 2.6 will have API disabled by default Jun 24
- BlogJet This! extension for Firefox 3 Jun 17
- Mobile Me is the new name of .Mac. Here’s the confirmation May 30
- .Mac re-branding is coming May 30
- Support center and forum changes May 14
- Flickr Export Plugin for Acorn Mar 25
- Mémoires 1.1.40 Released Feb 21
- Ho-ho-ho! Dec 23
- Mémoires 1.1.39 released Dec 10
- Mémoires 1.1.38 Final released Nov 26
- Mémoires 1.1.37 beta released Nov 19
[POST 5 memoires] или [POST 5 Mémoires].
Скачать cr_recent_posts.zip (766 байтов)
Установка как обычно: распакуйте, загрузите cr_recent_posts.php в wp-content/plugins/ и активируйте в админке.
Обновление (31/10): Версия 1.1:
- Исправлены названия функций для избежания возможных конфликтов с другими плагинами.
- Убран ненужный захват вывода.

Дмитрий, я тут для одного из сайтов чуть-чуть переделал Similar Posts, чтобы он работал с русским языком, добавив простой stemming из открытого источника. Хочется дать сообществу, а руки не доходят. Не нужно Вам?
Дим, get_titles - плохое имя для функции, очень очевидно. Значит будут конфликты с другими плагами.
И хорошо-бы покешить результат этой функции. Про файловый кеш в WP я писал тут - http://www.chanishvili.org/wp-cache251/
Roland: точно. Функцию брал из неплагина, который сейчас на сайте использую, поэтому забыл переименовать. Исправил.
Насчет кэша -- в смысле, отдельно писать свой кэш? Мне это не надо, у меня WP-Super-Cache.
А у кого не стоит -- разница между 13 и 14 запросами небольшая.
всё хорошо, кроме того что зачем дублировать те посты которые и так уже видны на данной страницы? было бы хорошо получить 12-ть последних постов..которых не видно на главной!!
BOB: Делалось это для того, чтобы выводить последние посты на страницах, а не в постах.
Здравствуйте. Не могу разобраться как публиковать посты на специально созданные подстраницы сайта? Например "О нас", или "литература". Перерыл весь интернет.
То, что тебе нужно, называется "категории", а не "подстраницы".
Вобщето я гуглил вопрос "как публиковать посты на специально созданные страницы", замена слова на категории дала тот же результат. По-моему у меня одного этот вопрос возник, что странно. Мне кажется очевидным что функционал внутренних страниц должен соответствовать функционалу главной. И должна быть возможность постить на не главные страницы, вместо главной.
Денис, страницы - это именнно "статичные" страницы, а не разделы сайта. Тебе нужны категории. Публикуешь пост в категорию x - получаешь на страничке категории x твой пост. Например, http://old.sellme.ru/category/programmirovanie
Можешь в настройках убрать "category" и тогда будет example.com/programmirovanie
И, RTFM: http://codex.wordpress.org/ru:Main_Page
Спасибо, буду разбираться. Категории отличаются от рубрик? У меня нигде нет слова категории в админке)
Да, в русской версии это называется "рубрики".
Плагин не работает если хочется разместить несколько лент на одной странице/посте. Ниже преведена обновленная функция.
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;
}