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

Автор:Дата:Если посты определенных рубрик исключены с главной страницы блога - они не попадут и в виджет "Свежие публикации". Но мы сделаем собственный виджет, который исправит ситуацию

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

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

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

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

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

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

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 кода

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

виджет php

Оставайтесь на связи! Блоготей пришлет вам новые статьи на почту!
Введите свой E-MAIL:

     Katyaru 10.12.2012


    
Читайте БлоготеЙ! на Google+
Читайте БлоготеЙ! на Фейсбуке

К записи "Виджет для постов, которых нет на главной странице" оставлено 11 коммент.

  1. Елена:

    Здравствуйте, Катя! Спасибо за эту полезную информацию, вот сижу, пытаюсь освоить … Мне подошел бы вариант с изменением кода, только у меня вместо , вот это:

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

    [Ответить]

    katyaru отвечает:

    Здравствуйте, Лена! В комментах невозможно опубликовать коды — напишите мне через форму связи со страницы Обо мне… Под изменением кода я подразумевала впихнуть этот код не в виджет — а прямо в сайдбар (в файле sidebar.php)

    Я не поняла, откуда взялся ‘type=postbypost&limit=5′… Но менять args ни на что нельзя(

    [Ответить]

  2. Елена:

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

    [Ответить]

    katyaru отвечает:

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

    [Ответить]

  3. Елена:

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

    [Ответить]

    katyaru отвечает:

    Где такой код у Вас?

    [Ответить]

  4. Елена:

    Катя, я написала Вам по прямой связи

    [Ответить]

  5. Катерина:

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

    [Ответить]

    katyaru отвечает:

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

    [Ответить]

  6. Алевтина:

    Здравствуйте.
    У меня почему-то перестала работать функция рубрики. Нажимаю на рубрику, всё равно все статьи выходят. Может знаете ответ?

    [Ответить]

    katyaru отвечает:

    Алевтина, я не поняла суть проблемы. Ведь рубрики все равно наполняются статьями, которые к ним относятся…

    [Ответить]


4 − два =

Палю тему!
Гугл в помощь
Надо подписаться!

Введите свой E-MAIL:

Delivered by FeedBurner

Дружите с Блоготеем в соцсетях


Смотрите все ВИДЕО Блоготея на YouTube


Blogotey | 


Спутник Блоготея в Tumblr

Наверх.