Автоматический вывод рекламных блоков в WordPress. Как вывести рекламу после заголовков h1-h6

Logo
Автоматический вывод рекламных блоков в Wordpress. Как вывести рекламу после заголовков h1-h6

В данной статье мы рассмотрим способ, как можно реализовать автоматический вывод рекламных блоков сразу после заголовков H1 – H6 на сайте, работающем на WordPress. Это позволит вам значительно сэкономить время при размещении рекламных блоков непосредственно в тексте страниц, а также, если повезет, увеличить доход от контекстной рекламы.

Стимулом к написанию этой статьи стал мизерный доход от контекстной рекламы на блоге dmitriydenisov.com. Если быть точным, то в среднем приходилось 1-2 клика на 1000 посетителей. Такой низкий показатель связан с тем, что на блоге большей частью посетителей являются вебмастера, которые не очень охотно переходят по рекламе.

Одной из причин этого является то, что вебмастера зачастую сами используют контекстную рекламу для заработка, а поскольку клацать по своей рекламе им запрещено, то они с успехом перестают клацать по ней совсем независимо от сайта. Таким образом, дохода от контекстной рекламы на моем блоге практически не было.

В связи с тем, что данный сайт монетизируется исключительно за счет контекстной рекламы (Как заработать на своем сайте и без него), я решил попробовать изменить расположение рекламных боков и выводить их под каждым заголовком. В силу того, что рекламные блоки Google Adsense не отличаются гибкостью настроек, я принял решение на время тестирования использовать Яндекс Директ.

Также причиной перехода было то, что Google Adsense позволяет размещать только до трех блоков на странице, в то время как в Яндекс Директ возможно размещение до 9-и блоков. Все же я думаю комбинировать показ рекламы от Google Adsense и Яндекс Директ, так как источников дохода много не бывает.

Ну а теперь давайте перейдем непосредственно к руководству по автоматическому добавлению рекламных блоков после заголовков в Wordrpess.

Как добавить рекламные блоки после заголовков H1 – H6 в WordPress

В одной из предыдущих статей мы уже рассматривали способ, как добавить рекламные блоки Google Adsense в WordPress. Для этого мы использовали специальный плагин под названием Advertising Manager. Кроме того мы также рассматривали способ добавления рекламы на блог при помощи шоткатов (шорткоды, shortcode). К сожалению, все эти способы подразумевают под собой ручное добавление кода в статьи.

К счастью есть способы, которые позволяют облегчить нашу работу и вывести рекламный код автоматически. При этом вам не потребуется вносить никаких изменений в базу данных (Основы работы с базами данных) или вручную править материалы на сайте. Все что вам потребуется, это добавить специальную php функцию в файл function.php, который находится в папке с файлами вашей темы оформления (Установка и редактирование темы WordPress). Код функции должен быть следующим.

Функция для автоматического добавления рекламных блоков после заголовков второго уровня (H2)

function ads_h2($content) {
$ads='Код рекламного блока';
$content=preg_replace('#<h2(.*?)</h2>#','<h2\1</h2><p style="text-align: center;">'.$ads.'</p>',$content);
return $content;
}
add_filter('the_content', 'ads_h2');

Принцип работу вышеприведенной функции следующий. При обработке страницы функция ищет совпадения с шаблоном и при нахождении заменяет его. В данном случае будет найден заголовок, выделенный тегами H2, который будет заменен на самого себя, после чего к нему будет добавлен код рекламных блоков. В данном случае код будет помещен в теги абзацев и выровнен по центру.

Также хочу заметить, что данный код будет выводить заголовки в том виде, в котором они были. Имеется в виду со всеми атрибутами. Аналогичным образом можно написать код для автоматического вывода рекламных блоков после заголовков h3-h6. Для этого просто замените h2 на нужное значение (h1, h3, h4, h5, h6).

Ну и в завершение давайте рассмотрим пример рабочего кода для добавления рекламных блоков после заголовков третьего уровня H3.

Рабочий код для автоматического добавления рекламных блоков после заголовков третьего уровня (H3)

function ads_h3($content) {
$ads='<script type="text/javascript">
//<![CDATA[
yandex_partner_id = 73630;
yandex_site_bg_color = \'FFFFFF\';
yandex_site_charset = \'utf-8\';
yandex_ad_format = \'direct\';
yandex_font_size = 0.8;
yandex_direct_type = \'flat\';
yandex_direct_limit = 1;
yandex_direct_title_font_size = 2;
yandex_direct_title_color = \'1470A5\';
yandex_direct_url_color = \'333333\';
yandex_direct_all_color = \'777777\';
yandex_direct_text_color = \'333333\';
yandex_direct_hover_color = \'0066FF\';
yandex_direct_favicon = true;
document.write(\'<sc\'+\'ript type="text/javascript" src="http://an.yandex.ru/system/context.js"></sc\'+\'ript>\');
//]]>
</script>';
$content=preg_replace('#<h3(.*?)</h3>#','<h3\1</h3><div class="ads_content">'.$ads.'</div>',$content);
return $content;
}
add_filter('the_content', 'ads_h3');

Как видно с примера выше, при вставке кода рекламного блока нужно не забывать экранировать кавычки. То есть, если мы используем одинарные кавычки, то внутри них можно использовать только двойные. В противном случае вложенные одинарные кавычки придется экранировать при помощи обратного слэша «\», иначе код не будет работать. Это одно из основных правил при написании кода на PHP.

На этом данная статья подошла к концу. Если у вас остались какие-то вопросы по данному материалу, вы всегда можете задать их в комментариях.

На этом все. Удачи вам и успехов в повышении доходов от контекстной рекламы.

Обнаружили ошибку? Выделите ее и нажмите Ctrl+Enter

Комментарии 32

  • Kanalie

    Статья мне очень помогла! спасибо! Но есть один вопросик.
    В превьюшках постов показывается на месте рекламы два слеша // . Не подскажите, как от них избавиться?

  • Дмитрий

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

  • Kanalie

    У меня еще один вопросик!
    А как можно поменять код, чтобы реклама отображалась не ПОД, а НАД заголовком?
    спасибо)

  • Дмитрий

    Попробуйте сделать следующим образом. Найдите строчку
    $content=preg_replace(‘#<h2(.*?)</h2>#’,'<h2\1</h2><p style="text-align: center;">’.$ads.'</p>’,$content);
    и замените ее на
    $content=preg_replace(‘#<h2(.*?)</h2>#’,'<p style="text-align: center;">’.$ads.'</p><h2\1</h2>’,$content);
    Должно помочь.

  • Владимир

    Над заголовком не надо)))
    Во всяком случае я советую, поисковики всегда учитывают сначала первую часть сайта, а если там реклама??
    бана не будет, и ничего подобного, но позиции в поиске могут немного упасть 

  • Олег

    В каком месте function/php именно вставить надо 

  • Дмитрий

    Можно вставлять в любое место, но чаще всего код добавляют в конец файла до закрывающего тега "?>", если такой имеется.

  • Олег

    Спасибо, я так и думал, но решил подождать Вашего заключения :)

  • Олег

    Дмитрий, для h1 что-то не хочет работать этот код + заметил что загрузка страниц увеличилась. Что это может быть?

  • Дмитрий

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

  • Олег

    Да, Дмитрий, выяснилось что у меня уже можно автоматически было добавлять код адсенса без помощи плагинов (стоял New Adman). Только есть небольшая проблема — рекламу видно и на главной странице сайта, то есть она не исчезает под заголовком, а все равно появляется в анонсе статьи. Как можно эту проблему решить?

  • Дмитрий

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

  • Олег

    Спасибо, попробую!

  • Kalian

    Не могу найти автоматический вывод рекламы после заголовка Н3 для Joomla. Так как после основного Н1 реклама выводится и это позволяют делать все плагины.
    Руками не охота вставлять код модуля каждый раз после тега Н3. Тем более если статей много(
    Подразумеваю что в joomla надо будет поменять файл вывода статьи default.php
    Вот только вопрос какой код и в какое место файла его вставить?
    Кто знает?

  • Дмитрий

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

  • Юрий

    Здравствуйте, а у меня нету файла function.php, что делать в этом случае?
    Зато есть файл functions.php, скажите пожалуйста, одно это и тоже или нет, можно ли для вставки рекламы этим способом использовать functions.php?

  • Дмитрий

    Здравствуйте. Это небольшая опечатка в статье. Видимо, быстро набирал и пропустил одну букву. Используйте файл с именем functions.php для вывода рекламных блоков.

  • Юрий

    Вот еще один момент, в первом примере Вы указываете:
    p style="text-align: center;
    А во втором примере у Вас уже стоит :
    div class="ads_content"
    Почему так, и что лучше использовать?
    И Я так понимаю, что для класса ads_content Вы в style.css прописали какие то параметры? Какие если не секрет?

  • Дмитрий

    Разницы абсолютно никакой нет. В первом примере стили прописаны непосредственно в коде, а во втором вынесены в таблицу стилей, так как их там несколько больше. Посмотреть стили Вы можете на примере моего сайта, воспользовавшись расширением для браузера FireBug.

  • leonking

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

  • Дмитрий

    Здравствуйте. Немного не по теме статьи, но все же отвечу. Для решения подобных задач нужно писать код и добавлять в него условия вывода. Сделать это не сложно. Главное знать идентификаторы рубрик, постов и т.д. То есть, идентификаторы тех элементов, по которым будет определяться вывод. Поскольку информация востребована, то в скором времени постараюсь написать об этом отдельную статью. Найти ее можно будет в рубрике "Ответы на вопросы".

  • Алексей Виноградов

    А как после первого h2 выводить один код, после второго h2 — другой код? Чтобы срезы отслеживать.

  • серж

    Дмитрий Здравствуйте, подскажите что убрать/дописать для того, чтобы код выводился только после первых двух заголовков h-2(как у вас)? Спасибо.

  • sweatego

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

  • Дмитрий

    Здравствуйте, серж, sweatego. У меня не повторяются заголовки второго уровня, поэтому и выводится реклама. Если на странице используется несколько одинаковых заголовков, то необходимо переписывать код. К сожалению, сейчас не скажу точно, как это все сделать, так как нужно предварительно переписать и протестировать код.

  • Алексей Виноградов

    Я реализовал у себя вывод разной рекламы под любым по счёту h2-h3. Могу помочь за небольшое вознаграждение, т.к. сам потратил времени и немного денег. Почта alexgen.v (кошка) гмаил.com

  • web11

    спасибо! все работает, реклама после тегов h2 показывается:)

  • Дмитрий

    Всегда рад помочь:)

  • серж

    Здравствуйте. Можно ли выводить код только после второго и третьего h2? Спасибо..

    зы а после первого h2 чтобы код не выводился..

  • Дмитрий

    Здравствуйте. Да, можно. Для этого необходимо немного изменить код, а именно параметры функции preg_replace (php.su/functions/?preg-replace)

  • Данила

    Дмитрий, здравствуйте, отличный пост! Но могли бы вы подсказать практически по вопросу как вывести блок только после первого и все? Спасибо! )

  • Дмитрий

    Данила, добрый день. Все очень просто. Необходимо добавить еще один параметр в функцию preg_replace. На примере заголовка H2: $content=preg_replace('#<h2(.*?)</h2>#','<h2\1</h2><p style="text-align: center;">'.$ads.'</p>',$content, 1);

Оставить комментарий

отменить ответ