Виджет для постов, которых нет на главной странице
Пару месяцев назад Блоготей рассказывал, как убрать с главной страницы публикации определенных категорий. Это нужная функция, которая может оказаться очень полезной при устройстве удобной и логичной навигации. Но недавно наша читательница — Елена — обратила внимание на то, что посты исключенных рубрик перестали появляться и в стандартном виджете «Свежие публикации». Решению этой проблемы и посвящена сегодняшняя статья.
Действительно, виджет из стандартного набора Вордпресс работает в связке с функциями темы. Поэтому он считает «свежими» только те публикации, которые появляются на главной странице блога.
Еще не приступая к экспериментам, я подумала, что потребуется
- либо кое-что менять в коде темы,
- либо ставить специальный плагин, в котором можно было бы указать рубрики, публикации которых учитывать
Конечно, я бы предпочла код. Но этот путь зачастую закрыт для авторов, которые только начали вести собственный блог. Знания и навыки приходят постепенно — одновременно отступает страх «все обрушить и непоправимо испортить». К тому же, бесконечные варианты тем блогов, написанных по-разному, разными людьми — увеличивает шансы, что мои советы окажутся просто неприменимы.
Поэтому я остановилась на варианте с плагином. Но без кода все-равно не обошлось
Php функция вызова свежих публикаций
Наконец разобравшись в том, какие богатства предлагает нам Кодекс Вордпресс, я в первую очередь отправилась на поиски нужных функций именно туда. И, конечно, нашла нужный код — вот он:
<?php wp_get_recent_posts( $args ) ?>
Подробности можно посмотреть на этой странице. Уверена, что при помощи этой php функции создан и стандартный плагин.
Теперь нам нужно модифицировать этот базовый код так, чтобы он собирал посты из конкретных рубрик. Для этого добавим нужные аргументы:
<?php $args = array( 'cat' => '1, 2, 3' , 'numberposts' => '5'); $recent_posts = wp_get_recent_posts( $args ); foreach( $recent_posts as $recent ){ echo '<li><a href="' . get_permalink($recent["ID"]) . '" title="Look '.esc_attr($recent["post_title"]).'" >' . $recent["post_title"].'</a> </li> '; } ?>
Во второй строке ‘cat’ => ’1, 2, 3′ — это ID рубрик (как посмотреть ID я писала в той же статье об исключении категорий с главной страницы). То есть, вам нужно вписать, вместо этих условных чисел — ID тех рубрик, свежие публикации которых вы хотите отображать в виджете.
В третьей строке ‘numberposts’ => ’5′ — это количество отображаемых постов. Понятно, что вы можете изменить и это число.
Плагин для отображения PHP кода в виджетах
И все бы хорошо — но минимальный стандартный набор виджетов позволяет нам отображать только текст или html-код. Но эта проблема решается еще проще — ведь существуют различные плагины. Я воспользовалась тем, который так прямо и называется PHP Code Widget
Он элементарно устанавливается, не требует никаких дополнительных настроек и генерирует в нашей админке, в разделе виджетов — нужную вкладку:
А дальше все вообще элементарно: в этот виджет вставляем наш код, вписываем заглавие (например, «Свежие публикации») и отправляем его на нужное место в сайдбар. В результате чего получаем маркированный список, оформленный в стилистике вашего блога. На Блоготее это выглядело бы вот так (я добавила две рубрики — «Подарки», которая у нас исключена с главной, и «Веб дизайн», который не исключон):
Читайте БлоготеЙ! на Google+ | |
Читайте БлоготеЙ! на Фейсбуке |
Здравствуйте, Катя! Спасибо за эту полезную информацию, вот сижу, пытаюсь освоить … Мне подошел бы вариант с изменением кода, только у меня вместо , вот это:
Я смутно догадываюсь, что чтобы модифицировать код в моем случае нужно вместо $args подставить ‘type=postbypost&limit=5′. Или я сильно ошибаюсь? Может подскажите как эта модификация должна выглядеть в моем случае? Ещё раз спасибо!
[Ответить]
katyaru отвечает:
Декабрь 10th, 2012 at 22:14
Здравствуйте, Лена! В комментах невозможно опубликовать коды — напишите мне через форму связи со страницы Обо мне… Под изменением кода я подразумевала впихнуть этот код не в виджет — а прямо в сайдбар (в файле sidebar.php)
Я не поняла, откуда взялся ‘type=postbypost&limit=5′… Но менять args ни на что нельзя(
[Ответить]
Ой почему-то не скопировался код
[Ответить]
katyaru отвечает:
Декабрь 10th, 2012 at 22:15
Код запрещен в комментах — пишите через форму прямой связи)
[Ответить]
попробую передать без треугольных скобок: у меня вместо ?php wp_get_recent_posts( $args ) ?
вот это: ?php wp_get_archives(‘type=postbypost&limit=5′); ?
Извините, если опять пусто будет
[Ответить]
katyaru отвечает:
Декабрь 10th, 2012 at 22:16
Где такой код у Вас?
[Ответить]
Катя, я написала Вам по прямой связи
[Ответить]
До чего же я не разумная, никогда бы сама этого не сделала, а с Вашей помощью — попробую. Спасибо
[Ответить]
katyaru отвечает:
Декабрь 11th, 2012 at 11:54
Эти умения в какой-то момент «открываются»))) Я бы год назад тоже такого не сделала! Если что — пишите — вместе разбираться будем)
[Ответить]
Здравствуйте.
У меня почему-то перестала работать функция рубрики. Нажимаю на рубрику, всё равно все статьи выходят. Может знаете ответ?
[Ответить]
katyaru отвечает:
Апрель 20th, 2013 at 09:38
Алевтина, я не поняла суть проблемы. Ведь рубрики все равно наполняются статьями, которые к ним относятся…
[Ответить]