Вконтакте
Телефон для заказов: +7 (910) 487 81 94
Подписка на RSS

WordPress — делаем раздел новостей и выводим из него анонсы в сайдбар

Недавно я начал монетизировать блог с помощью продажи постовых в специально для этого предназначенном разделе «Новости». Для него используется отдельный тип записей.

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

Для этого нам потребуется отредактировать пару файлов шаблона. Начнём с functions.php — добавим туда новую функцию:

function post_type_news() { 
register_post_type( 'news',  
array( 'label' => __('Новости'), 'public' => true, 
'show_ui' => true, 'publicly_queryable' => true, 
'supports' => array( 'title', 'editor', 'excerpts', 'custom-fields', 'revisions', 'comments', 'trackbacks') ) ); 

register_taxonomy( 'newscat', 'news', 
array( 'hierarchical' => true, 'label' => __('Рубрика') ) ); } 

add_action('init', 'post_type_news');

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

Переходим на страницу Новости→Рубрики и добавляем новую рубрику с одноимённым типу записей названием. В качестве ярлыка я указал «news»:

Отныне наши новости будут доступны по адресу /newscat/news, newscat — это ярлык таксономии, который я указал в коде при добавлении типа записей, news — это ярлык рубрики новостей.

Теперь можем добавить пару новостей и приступить к их выводу в левом сайдбаре. В левом — потому что в коде он находится ближе к началу страницы, а это хорошо для индексации.

Снова залезем в functions.php и где-нибудь до функции register_my_widget() добавим следующий код:

function getlastnews() { 
$lastnews = new WP_Query('post_type=news&showposts=15&orderby=date'); ?>
<li><h4>Новости</h4><div class="textwidget">
<?php while ($lastnews->have_posts()) : $lastnews->the_post(); ?>
<div class="news_widget_item">
<div class="news_date"><?php the_time(__('l, j F Y')) ?></div>
<a href="<?php the_permalink() ?>" class="news_widget_title"><?php the_title(); ?></a>
</div>
<?php endwhile; ?>
<a href="<?php bloginfo('home'); ?>/newscat/news" class="sendlink">Другие новости</a>
</div></li>
<?php };

Я использовал собственную разметку для элемента сайдбара, в вашей теме она может отличаться, поэтому уточните, как это дело формируется у вас. Как вариант — можно найти это в режиме просмотра исходного кода в браузере.

Если вы не используете для новостей отдельный тип записей, то вам понадобится заменить post_type=news на cat=ID, где ID — это цифровой идентификатор категории, посты из которой вы хотите вывести в сайдбар.

Параметр showposts=15 говорит о том, что будут выводиться 15 элементов.

Теперь добавим в функцию register_my_widget() строку:

register_sidebar_widget('Новости', 'getlastnews');

Если такой функции нет, то создадим её следующим образом:

function register_my_widget() { 
register_sidebar_widget('Новости', 'getlastnews'); } 
add_action('init', 'register_my_widget');

Конечно же, нужно всю эту штуку закрасивить. Кому интересно — вот параметры стилей, которые я использовал в своей теме:

.news_date { 
font-size:11px; 
color:#333333; 
margin-bottom:5px; 
display:block; 
font-weight:bold; 
font-style:italic; } 

.news_widget_image img { 
display:block; 
border:1px solid #8DAEE0; 
padding:2px; 
background-color:#FFF; 
margin-bottom:5px; } 

.news_widget_image:hover img { 
border:1px solid #8DAEE0; } 

.news_widget_title { 
display:block; 
font-size:12px; 
text-decoration:underline; 
color:#3167B7; } 

.news_widget_title:hover { 
text-decoration:none; 
color:#3167B7; } 

.news_widget_item { 
display:block; 
margin-bottom:15px; }

Можете сравнить этот код с кодом виджета и сопоставить названия классов с теми элементами, к которым они применяются, чтобы лучше понять ситуацию.

Добавлять стили следует в файл style.css.

Теперь останется лишь добавить виджет в нужное место. Для этого перейдём на страницу Внешний вид→Виджеты и перетащим наши «Новости» в нужный сайдбар:

Вот и всё. Результат вы можете увидеть на этом блоге, слева.

Надеюсь, у вас не возникнет проблем, а если возникнут — не стесняйтесь и добро пожаловать в комментарии, будем вместе разбирать ваши примеры!

Желаю вам хорошего настроения!
Seogad

P.S. Подскажите, по возможности, какие инструменты вы используете для ускорения индексации новых страниц в Яндексе.

Понравилась статья?

Создание блога под ключ всего за 999 рублей!

«WordPress — делаем раздел новостей и выводим из него анонсы в сайдбар» — комментарии (24)

  • Отлично, спасибо за инструкцию, пойду пробовать)

  • Я тоже вывожу новости в сайдбар, но через плагин Latest Posts by Category Archive

  • @Илья, пожалуйста! Удачи с этим делом =)

  • Тоже попробую, хотя я уже сделал такое другим способом

  • Спасибо) Уже нашел где применить.

  • А что значит чистить кэш? Я имею в виду технически.

  • Рекомендую почитать о том, как изменить URL материалов в дополнительных типах записей — http://seogad.ru/cms/custom-permalinks-in-custom-post-types

  • @Nata, есть плагины кеширования, они сохраняют кеш, который отдают через браузер вместо сайта, то есть снижают нагрузку и ускоряют просмотр. Этот кеш нужно чистить при изменении файлов.

  • @Nata, как правило, в самих плагинах есть кнопка «удалить кеш» или «очистить кеш».

  • А поконкретнее что за плагины. Что то в той статье я не увидела.

  • @Nata, это если они установлены, если их нет, значит и разговора нет =) как вариант это может быть wp super cache — у меня такой стоит, но их ещё куча разных.

  • А какой уровень вложенности будут иметь заметки на блоге, если их помещать в эти Новости? Четвёртый?

  • @Галина, те, которые совсем старые, будут иметь четвёртый, новые — второй, за счёт сайдбара, чуть постарее — третий, зависит от того, сколько статей выводить на одной странице в новостях. У меня кажется 50 выводятся

  • Ну вот, и как это будет выглядеть, если оптимизатор в GGL заказывает ссылку в статье на уровне не дальше третьего, а она (статья с ссылкой) со временем переместится на четвёртый уровень вложенности? Ведь оптимизаторы платят за «вечные» ссылки и наверняка иногда проверяют их наличие…

  • Спасибо за отличное решение. Единственная проблема, с которой я столкнулся и пока не смог решить — не работает ссылка «Другие новости».

  • у меня похожа связана с темой поста, но немного другого характера. Дело в том, что на моем сайте стоит шаблон, в котором предусмотрена публикация анонсов записей из выбранной рубрики в сайдбаре. Но случился глюк, и теперь я не могу сменить рубрику для вывода в сайдбар, отображаются всегда только записи из выбранной изначально рубрики.
    Можете помочь найти, в чем причина?

  • @maluk_z, в админку бы залезть… или на фтп. Пустите погреться на минутку, посмотрю.

    artsav@artsav.com

  • отправил письмо)

  • почему страница с новостью может отдавать 404 ошибку?

  • Подскажите, пожалуйста, что нужно писать в файл sidebar.php
    Я все сделала как написано, добавила виджет «Новости», создала новость, перетащила виджет в сайдбар, но на странице не отображается ничего :(

  • Здравствуйте Артем , делаю всё как вы написали но при попытке просмотра новости выдает сообщение что
    Страница не найдена
    К сожалению, мы не можем найти запрашиваемую вами страницу. Возможно, вам поможет навигация по сайту или поиск.

  • @Иван, сейчас всё изменилось в Вордпрессе. Как появится время, я напишу новые уроки (или исправлю старые). Следите за обновлениями.

  • давно вы не обновлялись. Жаль, а ведь вопрос появился, у меня /newscat/news/ бьет 404 ошибку, хотя новости отображаются в сайтбаре…

Упоминания на других ресурсах

Ваш комментарий

Поля отмеченные * нужно в любом случае заполнить. Пожалуйста, воспринимайте буквально текст «Блог или профиль в соц. сети», не оставляйте ссылки на интернет-магазины, коммерческие сайты и страницы, на которых нельзя познакомиться с вами и вашей деятельностью - такое творчество будет удалено. Это dofollow блог.