Как выводить ссылки в сайдбаре только на главной странице блога на WordPress
Здравствуйте, дорогие друзья!
Давно я не публиковала статьи в этом блоге. Просто была сильно занята с другими своими проектами. И в процессе этой работы у меня появилась одна проблема: как сделать так, чтобы в боковой колонке блога рекламный баннер, рекламные ссылки или RSS-лента (фид) выводились только на главной странице?

Зачем это надо?
Чтобы не было большого количества сквозных ссылок на блоге.
Некоторые блоггеры, и я в начале своей блоггерской деятельности, ставят в сайдбар фиды на другие свои блоги или на блоги друзей. Такие ссылки из фидов выводятся на всех страницах блога. В принципе, ничего плохого в этом нет, если получается 3-5 ссылок, а если больше десятка? А если на тех блогах, куда ведут ссылки, постоянно добавляются новые статьи, то получается вообще мелькание ссылок. А за это можно легко залететь под АГС, что и случилось с одним из моих блогов.
Кроме того, если вы продаете со страниц своего блога ссылки в гогетлинксе, то там существуют довольно строгие ограничения на количество внешних ссылок на странице.
Вот для того, чтобы совместить приятное с полезным – не раздражать Яндекс большим количеством ссылок и иметь возможность заработать денежку за постовые, можно часть ссылок в боковой колонке разместить только на главной странице.
В шаблоне Гудвина Emulator эта проблема решается легко – там предусмотрены 2 файла, которые формируют сайдбар: sidebar.php выводит боковую колонку для главной страницы, а sidebar2.php – для внутренних страниц блога.
А что делать, если аналогичный файл один в шаблоне?
Конечно, это нужно сделать с помощью команды сравнения в PHP. Я не очень сильна в этом языке программирования, но все же путем прочесывания Интернета мне удалось найти нужный код и опробовать его на своих блогах.
Вот он:
<?php if (is_front_page()) : ?>
ваш код
<?php endif; ?>
Вот так просто
Но этот код нельзя вставлять в виджетах – нужно открыть файл sidebar.php и вставить в него в том месте, где вы хотите его видеть.
А что делать, если вы хотите добавить фид с какого-то блога только на главную?
Если поставить фид (RSS ленту) через виджеты, то эти ссылки будут отображаться в боковой колонке на всех страницах блога. Чтобы это не происходило, нужно внутрь первого PHP-кода (т.е. вместо слов «ваш код») добавить еще следующие строчки:
<?php include_once(ABSPATH.WPINC.'/feed.php');
$rss = fetch_feed('http://feeds.feedburner.com/АДРЕС_ВАШЕЙ_RSS_ЛЕНТЫ');
// определяем количество записей из RSS-ленты. Здесь - 3
$maxitems = $rss->get_item_quantity(3);
$rss_items = $rss->get_items(0, $maxitems);
?>
<ul>
<?php if ($maxitems == 0) echo '<li>Нет записей.</li>';
else
// начало цикла, который формирует из записей RSS-ленты гиперссылки.
foreach ( $rss_items as $item ) : ?>
<li>
<a href='<?php echo $item->get_permalink(); ?>'
title='<?php echo 'Дата: '.$item->get_date('j F Y | g:i a'); ?>'>
<?php echo $item->get_title(); ?></a>
</li>
<?php endforeach; ?>
</ul>
Эту конструкцию удобно использовать, если вы хотите связать в кольцо какие-то свои блоги.
Желаю удачи в оформлении блога,
Марина Макарова
* * *
За окном уже весна, солнышко, птички поют… А это значит, что совсем скоро можно будет снять теплое пальто и красоваться в летнем платьице. К чему это я? Да к тому, что пора, дорогие дамы, вплотную заняться своей внешностью. Мне, например, нравится косметика фирмы Oriflame. Единственное средство, которое мне у них не подошло – это крем для век.


А я так и не поняла, в каком месте вставлять код. Для меня описание “там, где вы хотите”, скорее встает очередным препятствием, потому что боюсь элементарно все испортить. А лишние внешние ссылки очень хочется убрать
Место зависит от конкретного шаблона – я так подсказать не могу. Во-первых, нужно знать, где вы хотите его вставить – вверху сайдбара или внизу. А во-вторых, нужно видеть и сам файл боковой колонки (sidebar.php), чтобы правильно вставить туда код и ничего не нарушить.
Здравствуйте,Марина! Я отправила вам файл, а вставить код желательно в нижней части.
Спасибо
Огромное спасибо! Получила письмо от вас, теперь буду пробовать изменять sidebar
Спасибо Марина, помогли, Ваш код работает. А можно ли сделать наоборот, чтобы блок в сайдбаре отображался на всех страницах кроме главной?
Задача следующая: нужно отобразить один и тот же блок ссылок в сайдбаре на всех страницах сайта, но чтобы ссылки в этом блоке были открыты для поисковиков только на главной, на всех остальных rel=”nofollow”.
Нашел решение. Нужно вставить этот код дважды, но с одним отличием: перед is_front_page поставить восклицательный знак ! Вот так: !is_front_page И тогда второй блок будет на всех страницах кроме главной.
Как Вы считаете, это правильный код или можно сделать как-то иначе?
Ametist, если свою проблему решили, то хорошо. А так есть плагин для вставки кода в виджет – называется Executable PHP widget. Ставите плагин – он работает как обычный виджет Текст (gроизвольный текст или HTML-код), только позволяет вставлять php код, и не надо мучиться с sidebar.php и выбором места, рискуя накосячить…
А Марине спасибо за сам код – буду применять его в сочетании с Executable PHP widget