Понедельник , 24 Июль 2017
Главная / Делаем блог / Виджет для постов, которых нет на главной странице

Виджет для постов, которых нет на главной странице

Виджет для постов, которых нет на главной страницеПару месяцев назад Блоготей рассказывал, как убрать с главной страницы публикации определенных категорий. Это нужная функция, которая может оказаться очень полезной при устройстве удобной и логичной навигации. Но недавно наша читательница — Елена — обратила внимание на то, что посты исключенных рубрик перестали появляться и в стандартном виджете «Свежие публикации». Решению этой проблемы и посвящена сегодняшняя статья.

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

Еще не приступая к экспериментам, я подумала, что потребуется

  1. либо кое-что менять в коде темы,
  2. либо ставить специальный плагин, в котором можно было бы указать рубрики, публикации которых учитывать

Конечно, я бы предпочла код. Но этот путь зачастую закрыт для авторов, которые только начали вести собственный блог. Знания и навыки приходят постепенно — одновременно отступает страх «все обрушить и непоправимо испортить». К тому же, бесконечные варианты тем блогов, написанных по-разному, разными людьми — увеличивает шансы, что мои советы окажутся просто неприменимы.

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

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

Он элементарно устанавливается, не требует никаких дополнительных настроек и генерирует в нашей админке, в разделе виджетов — нужную вкладку:

виджет для php кода

А дальше все вообще элементарно: в этот виджет вставляем наш код, вписываем заглавие (например, «Свежие публикации») и отправляем его на нужное место в сайдбар. В результате чего получаем маркированный список, оформленный в стилистике вашего блога. На Блоготее это выглядело бы вот так (я добавила две рубрики — «Подарки», которая у нас исключена с главной, и «Веб дизайн», который не исключон):

Один комментарий

  1. Вячеслав

    Реанимированные комменты

    Елена:
    10.12.2012 в 22:09
    Здравствуйте, Катя! Спасибо за эту полезную информацию, вот сижу, пытаюсь освоить … Мне подошел бы вариант с изменением кода, только у меня вместо , вот это:
    Я смутно догадываюсь, что чтобы модифицировать код в моем случае нужно вместо $args подставить ‘type=postbypost&limit=5′. Или я сильно ошибаюсь? Может подскажите как эта модификация должна выглядеть в моем случае? Ещё раз спасибо!

    katyaru:
    10.12.2012 в 22:14
    Здравствуйте, Лена! В комментах невозможно опубликовать коды — напишите мне через форму связи со страницы Обо мне… Под изменением кода я подразумевала впихнуть этот код не в виджет — а прямо в сайдбар (в файле sidebar.php)
    Я не поняла, откуда взялся ‘type=postbypost&limit=5′… Но менять args ни на что нельзя(

    Елена:
    10.12.2012 в 22:13
    Ой почему-то не скопировался код

    katyaru:
    10.12.2012 в 22:15
    Код запрещен в комментах — пишите через форму прямой связи)

    Елена:
    10.12.2012 в 22:15
    попробую передать без треугольных скобок: у меня вместо ?php wp_get_recent_posts( $args ) ?
    вот это: ?php wp_get_archives(‘type=postbypost&limit=5′); ?
    Извините, если опять пусто будет

    katyaru:
    10.12.2012 в 22:16
    Где такой код у Вас?

    Елена:
    10.12.2012 в 22:22
    Катя, я написала Вам по прямой связи

    Катерина:
    11.12.2012 в 11:45
    До чего же я не разумная, никогда бы сама этого не сделала, а с Вашей помощью — попробую. Спасибо

    katyaru:
    11.12.2012 в 11:54
    Эти умения в какой-то момент «открываются»))) Я бы год назад тоже такого не сделала! Если что — пишите — вместе разбираться будем)

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

3 + 13 =