Как разместить рекламные блоки на статических страницах и в статьях сайта WordPress

Здравствуйте, уважаемые читатели блога Goldbusinessnet.com. Сегодня продолжим весьма и весьма актуальную тему монетизации веб-проекта и поговорим о вставке рекламных объявлений практически в любое место сайта WordPress автоматическим и полуавтоматическим (посредством коротких кодов shortcodes) способами без привлечения плагинов.

Конечно, для начинающих и тех, кто не имеет времени, желания и/или соответствующих знаний для размещения блоков рекламы лучше подойдут все-таки расширения (их использование не требует редактирования кода шаблонов, что часто является камнем преткновения), выбор коих весьма велик. Есть предложения как на официальном сайте Вордпресс (AdsPlace’r, Advanced Ads, AdRotate), так и от сторонних разработчиков (например, Ads Pro Plugin).

Однако, здесь не все так просто. Функционал бесплатных плагинов обычно весьма невелик и не позволяет реализовать все задумки, а плагины с богатыми возможностями обычно платные, что не всем подходит. Потому мы и разберем методы, среди которых вы с большой долей вероятности отыщите нужный вариант размещения рекламы на статических страничках и в постах блога WP.

Вставка кода рекламных блоков в постах и на статических страницах блога WP

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

Основная цель наших сегодняшних изысканий понятна — повысить доход от рекламы. Чем больше вариантов мест расположения объявлений, тем больше возможностей найти самое оптимальное из них и тем самым увеличить заработок.

Добавлю, что все рассматриваемые нами методы в принципе подходят для размещения любой рекламы, но для наглядности они будут описаны на примере контекстных объявлений Адсенс и рекламной сети Яндекса (в этом материале об РСЯ все подробности) с учетом всех нюансов.

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

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

Для открытия и редактирования файлов в силу многих причин лучше применять специальный софт. Рекомендую использовать в комплексе проверенные программы: FileZilla и самый лучший редактор Notepad++ (можно, конечно, ограничиться и Нотепадом, если у вас установлен плагин, позволяющий получить доступ к удаленному серверу через ФТП).

Реклама в начале, конце статей и статических страниц

Прежде несколько слов о том, как вставить рекламные объявления в начало или конец любой вэбстраницы (например, статической, такой как «Контакты», «Обо мне», «Карта сайта» и т.д.).

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

В стандартном случае для вывода статических страниц блога Вордпресс присутствует шаблон page.php, а для отображения постов — single.php. Однако, многие современные темы имеют более сложную структуру, где при формировании тех или иных страничек участвуют сразу несколько шаблонов. Если это так, то постарайтесь понять, какие файлы следует задействовать для корректного отображения рекламных блоков. В большинстве случаев в их названии присутствуют составляющие «page» и «single».

Например, в моем случае за отображение статических страниц отвечают 2 файла (page.php и content-page.php), которые требуется задействовать в зависимости от решаемой задачи.

Чтобы реклама отображалась вверху странички под основным заголовком (у меня это h1), я разместил код в content-page.php ниже строчки, содержащей такую функцию:

<?php the_title(); ?>

С целью вывода рекламных объявлений ниже основного содержания пришлось поместить код после функции вывода контента the_content():

<?php the_content(); ?>

Для наглядности представлю скриншот, где в соответствующий шаблон моей темы вставлены два фрагмента кода контекстной рекламы Гугл Адсенс (как настроить контекст в своем аккаунте), один из которых выводит блок вверху, а второй внизу всех статических страниц:

А вот если у меня вдруг возникнет необходимость верхнее объявление поместить над заголовком h1, то есть, в самый верх статических веб-страниц, то нужно будет оттолкнуться от функции начала цикла, разместив код под этой строчкой:

<?php while ( have_posts() ) : the_post(); ?>

А вот функция окончания цикла:

<?php endwhile; ?>

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

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

Даже если для вас PHP код является темным лесом, отталкиваясь лишь от данных выше нехитрых рекомендаций вполне можно с помощью последовательных итераций (по-простому методом тыка) найти подходящее место для кода.

Кстати, раз уж речь зашла о кодах рекламных объявлениях Adsense, то нужно для полноты картины отметить один нюанс. Дело в том, что на 2-ом отсюда скрине выше присутствует только второй фрагмент кода, который полностью выглядит так:

<script async src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js">
<div class="ads-box">
<!-- Адаптивный - статические страницы 1 -->
<ins class="adsbygoogle"
     style="display:block"
     data-ad-client="ca-pub-XXXXXXXXXXXXXXXX"
     data-ad-slot="7909991576"
     data-ad-format="auto"
     data-full-width-responsive="true"></ins>
<script>
     (adsbygoogle = window.adsbygoogle || []).push({});
</script></div>

Дело в том, что первая часть представляет из себя вызов гугловского скрипта:

<script async src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js">

Ее лучше поместить между тегами <head> и </head>, иначе говоря, в хидер. В этом случае мы не только оптимизируем скорость загрузки веб-страниц и усилим производительность сайта, но и получим возможность активировать автоматическое размещение рекламы со стороны Гугла. В темах WP за вывод хидера обычно отвечает шаблон header.php.

Единожды вставив строку вызова скрипта контекстной рекламы Google Adsense между тегами head все остальные коды можно размещать без этой составляющей. Вывод рекламы в этом случае будет работать корректно.

Таким же способом можно вставить любую рекламу, включая РСЯ (как получить учетную запись в сети контекстной рекламы Яндекса).

А теперь еще раз взгляните на второй скриншот вверх. Обратите внимание, что сам код заключен в контейнер DIV с прописанным классом (class=»ads-box»). Это сделано для более красивого и корректного оформления рекламных блоков.

Например, можно прописать соответствующие отступы посредством margin или padding. В моем случае правило CSS для контейнера с классом «ads-box» выглядит так:

.ads-box {margin-top:10px; margin-bottom:30px}

Вы можете тоже привлечь на помощь стили, ознакомившись с информацией в разделе «Учебник CSS», а также воспользовавшись, например, средствами разработчика в популярных браузерах, прародителем которых стал в свое время замечательный плагин Firebug для Firefox’а.

Аналогично определяется и место вставки кода для страниц записей (статей) вашего блога WordPress. Однако, не всегда так легко определить место в шаблонах, куда необходимо вставить рекламный код. Современные темы WP, как я уже сказал, во многих случаях содержат несколько файлов, которые определяют отображение конкретной страницы в веб-браузере.

Еще раз на примере моей темы продемонстрирую в качестве образца более сложный вариант, когда нужно вывести рекламные объявления сразу после главного заголовка в постах (напомню, в моей текущей теме это h1, у вас может быть, например, H2). Для выполнения этой задачи мне потребовалось открыть на редактирование шаблон content.php и вставить код так:

Ориентиром мне здесь послужила условная функция вывода записей блога:

<?php if ( is_single() ) : ?>

Код был размещен между этой строчкой и строкой окончания действия функции:

<?php endif; // is_single() ?>

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

Дело в том, что основной заголовок h1 входит в контейнер header, где также содержится дата опубликования статьи и кнопки социальных сетей. Поэтому для корректного отображения рекламы ее код был вставлен ниже закрывающего тега </header> (чтобы убедиться в этом, просто прокрутите эту страничку вверх). Надеюсь, эта информация вам пригодится.

Для отображения рекламных блоков внизу статей я использовал шаблон single.php:

Идем дальше. В большинстве случаев требуется выводить рекламные блоки не для всех статических страниц, а лишь для некоторых. В стандартном варианте блога WP обычно их не так много, поэтому удобно использовать специальную условную функцию:

<?php if ( is_page( array(225, 787, 6236, 3888))) : ?>
[рекламный код]
<?php endif; ?>

Выше предложенный фрагмент и следует поместить в места, где будут выводиться объявления, вместо чистого рекламного кода. Только не забудьте вставить свой код рекламы и заменить значения ID страниц 225, 787, 6236, 3888 на свои (как определить идентификатор статических страниц в WordPress).

Вставляем блоки рекламы внутри страниц

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

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

Стоит лишь воспользоваться соответствующими функциями, которые надо поместить в файл functions.php, с помощью которого можно успешно выполнить поставленные задачи.

Как вставить рекламные объявления под заголовки h1-h6

Очень часто страницы с объемным контентом имеют множество подзаголовков (как на моем блоге) и необходимо выводить рекламу под каждым из них (или под некоторыми). Чтобы добиться отображения блоков (Адсенс, РСЯ либо иной рекламы) под заголовками h1-h6 абсолютно на всех страницах ресурса, где содержится контент, достаточно открыть на редактирование упомянутый functions.php и вставить туда вот такую конструкцию:

function ads_h2($content) {
$ads='Рекламный код';
$content=preg_replace('#<h2(.*?)</h2>#','<h2\1</h2><div class="ads-box">'.$ads.'</div>,$content);
return $content;
}
add_filter('the_content', 'ads_h2');

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

В данном случае реклама будет появляться под заголовками H2 (наиболее часто встречающийся вариант). При желании вы можете поменять в выше приведенном коде H2 на какой-то другой. Только будьте внимательны и произведите замену во всех местах.

Внимание! Если вы планируете копировать выше приведенный и последующие коды, то не забудьте изменить в них class=»ads-box» на свой собственный, иначе рекламные блоки не будут корректно отображаться.

Теперь обратим внимание на третью строчку представленной функции. Заменим ее на такую:

$content=preg_replace('#<h2(.*?)</h2>#','<h2\1</h2><div class="ads-box">'.$ads.'</div>',$content, 1); return $content;}

$content, 1 — этот кусок означает, что блоки рекламы будут появляться только после первого заголовка H2. Можно поставить любое число, которое будет определять количество первых заголовков, после которых будут выводиться рекламные объявления. Например, если вместо 1 поставить число 4, то блоки будут отображаться под четырьмя первыми заголовками h2 как в статьях, так и на статических страницах.

Но это далеко не все. Ежели вы желаете, чтобы реклама появлялась только в статьях, надо использовать вот такую функцию:

function ads_h2($content) {
$ads='рекламный код';
if (is_single()) {
$content=preg_replace('#<h2(.*?)</h2>#','<h2\1</h2><div class="ads-box">'.$ads.'</div>',$content);
 }
 else {
 }
return $content;
}
add_filter('the_content', 'ads_h2');

Параметр $content можно изменять точно также. Для отображения рекламы исключительно на статических страницах надо использовать условие if (is_page()) вместо if (is_single()):

function ads_h2($content) {
$ads='Рекламный код';
if (is_page()) {
$content=preg_replace('#<h2(.*?)</h2>#','<h2\1</h2><div class="ads-box">'.$ads.'</div>',$content);
 }
 else {
 }
return $content;
}
add_filter('the_content', 'ads_h2');

Видите, сколько разнообразных возможностей предоставляет волшебный functions.php. Но и это еще не все. Иногда необходимо, чтобы реклама появлялась лишь после определенного по очередности подзаголовка статей, скажем, после каждого второго. И здесь есть решение:

function ads_h2( $content ){
	if( ! is_single() )
		return $content;

	$ads = '<Рекламный код';
	preg_match_all( '#<h2.*?</h2>#', $content, $match );
	if( $key = $match[0][1] )
		$content = str_replace( $key, "$key <div class='ads-box'>$ads</div>", $content );

	return $content;
}
add_filter('the_content', 'ads_h2');

Как видите, используя лишь функционал Вордпресс, можно без труда добиться желаемого.

Еще несколько вариантов местоположения рекламы в статьях

1. Можно разместить рекламные объявления после тега more (как вы знаете, этот тег обрезает статью при публиковании ее анонса на главной или страницах рубрик). С этой целью в functions.php нужно вставить вот такую функцию:

function advert_after_more_tag($text) {
if (is_single()) {
$ads = 'Код рекламы';
$pos = strpos($text, "\n", strpos($text, "<span id=\"more-", 0));
$text1 = substr($text, 0, $pos);
$text2 = substr($text, $pos);
$text = $text1 . "\n" . $ads . "\n" . $text2;
}
return $text;
}
add_filter('the_content', 'advert_after_more_tag');

2. Через определенное количество символов:

function content_advertise($text){
    $nu = 1000;
    $ads = 'Код рекламы';
    return preg_replace('@([^^]{'.$nu.'}.*?)(\r?\n\r?\n|
)@', "\\1$ads\\2", trim($text), 1);
}
add_filter('the_content', 'content_advertise', -10);

Необходимые пояснения:

$nu = 1000; — через сколько символов будет отображаться рекламное объявление.

trim($text), 1 — единичка означает, что блок будет выводится один раз. Конечно, вы вольны прописать свое число, но слишком усердствовать все-таки не стоит, чтобы не испортить баланс и не вызвать отрицательную реакцию читателей.

3. После определенного абзаца статьи:

function wpse_ad_content( $content ) {
        if( !is_single() )
            return $content;
            $paragraphAfter = 3; //Введите номер абзаца, после которого вставляете рекламу.
            $content = explode ( "</p>", $content );
            $new_content = '';
                for ( $i = 0; $i < count ( $content ); $i ++ ) {
                    if ( $i == $paragraphAfter ) {
                    $new_content .= 'Рекламный код';
                    }
            $new_content .= $content[$i] . "</p>";
            }
            return $new_content;
    }
add_filter( 'the_content', 'wpse_ad_content' );

4.1 Вверху после заголовка статьи спустя некоторое время после публикации:

function content_advertise($text){
    if (is_single()) {	
$days = 5; // через сколько дней после даты публикации поста показывать рекламу
$offset = (int) time() - (int) strtotime($GLOBALS['post']->post_date);
$interval = 3600*24*$days;
if($offset < $interval ) return $text;
    $ads = 'Рекламный код';
}
return $ads.$text;
}
add_filter('the_content', 'content_advertise', -10);

Если вы особо печетесь о своих постоянных подписчиках (обычно они в первую очередь знакомятся с содержанием свежеиспеченного материала), то тем самым вы избавляете их от необходимости отвлекаться на рекламу при чтении статьи. Изменяя значение переменной $days, можете установить, через сколько дней будут появляться объявления.

4.2 Внутри статьи спустя определенное время после опубликования:

function content_advertise($text){
     if (is_single()) {
$days = 5; // спустя какое количество дней после опубликования статьи показывать рекламу
$nu = 1000; //спустя сколько символов искать перенос строки и вставлять рекламу
$offset = (int) time() - (int) strtotime($GLOBALS['post']->post_date);
$interval = 3600*24*$days;
if($offset < $interval ) return $text;
     $ads = 'Рекламный код';
} 
return preg_replace('@([^^]{'.$nu.'}.*?)(\r?\n\r?\n|</p>)@', "\\1$ads\\2", trim($text), 1);
}
add_filter('the_content', 'content_advertise', -10);

Думаю, здесь все понятно. Единственное, напомню, что в строке:

return preg_replace('@([^^]{'.$nu.'}.*?)(\r?\n\r?\n|</p>)@', "\\1$ads\\2", trim($text), 1);

trim($text), 1 значит, что будет отображаться только один рекламный блок. Естественно, вы можете увеличить это значение.

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

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

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

Вот какую конструкцию необходимо вставить в соответствующие места файлов темы Вордпресс (content.php, single.php и т.д.), чтобы обеспечить вывод рекламных объявлений, например, в начале и в конце публикаций той или иной рубрики:

<?php if(is_single()&& in_category('1')): ?>
[реклама 1]
<?php endif; ?>
<?php if(is_single()&& in_category('2')): ?>
[реклама 2]
<?php endif; ?>
............................................
............................................
............................................
<?php if(is_single()&& in_category('n')): ?>
[реклама n]
<?php endif; ?>

Вместо значений in_category(») 1, 2 и т.д. подставьте ID соответствующих рубрик (категорий), а [реклама 1], [реклама 2] и далее замените на собственные коды.

Здесь комбинируйте кодами как душе угодно. Например, это могут быть блоки РСЯ, Адсенс либо других рекламных сетей, причем, в любых вариациях. Вы можете, например, в постах одной рубрики выводить контекстную рекламу Яндекса, а в других — Гугла. Либо создать разные объявления для каждой категории в рамках одной сети в том числе для отслеживания их эффективности. В общем, возможностей здесь достаточно.

Далее попробуем обеспечить отображение рекламы внутри постов после подзаголовков отдельно для каждой рубрики. Предлагаю следующую конструкцию, которую нужно поместить в уже знакомый нам functions.php:

function ads_h2( $content ){
	if(is_single()&& in_category('1'))
$ads = 'рекламный код 1';
if(is_single()&& in_category('2'))
$ads = 'рекламный код 2';
...................................
...................................
...................................
if(is_single()&& in_category('n'))
$ads = 'рекламный код n';
$content=preg_replace('#<h2(.*?)</h2>#','<h2\1</h2><div class="ads-box">'.$ads.'</div>',$content); return $content;} 
add_filter('the_content', 'ads_h2');

Опять же, не забудьте подставить значения ID своих категорий, класс (вместо «class=»ads-box»»), а также формат заголовков (в выше приведенном примере это h2).

Еще можно сделать так, чтобы под каждым подзаголовком статьи той или иной рубрики выводились разные рекламные объявления. Вот функция, решающая эту задачу, которую опять же помещаем в functions.php:

function ad_after_heading( $content ) {
if ( ! is_single() ) {
return $content;
}
$pattern = "#<h2.*?</h2>#";
$content = preg_replace_callback(
$pattern,
function ( $matches ) {
static $num = 0;
$num++;
$heading = $matches[0];
if ( $num == 1 ) { // первый подзаголовок h2
if(is_single()&& in_category('1'))
return $heading . 'реклама 1.1';
if(is_single()&& in_category('2'))
return $heading . 'реклама 1.2';
..........................................
..........................................
..........................................
if(is_single()&& in_category('n'))
return $heading . 'реклама 1.n';
} elseif ( $num == 2 ) { // второй подзаголовок h2
if(is_single()&& in_category('1'))
return $heading . 'реклама 2.1';
if(is_single()&& in_category('2'))
return $heading . 'реклама 2.2';
.........................................
.........................................
.........................................
if(is_single()&& in_category('n'))
return $heading . 'реклама 2.n';
} elseif ( $num == n ) { // n-ый подзаголовок h2
if(is_single()&& in_category('1'))
return $heading . 'реклама n.1';
if(is_single()&& in_category('2'))
return $heading . 'реклама n.2';
........................................
........................................
........................................
if(is_single()&& in_category('n'))
return $heading . 'реклама n.n';
}
return $heading;
},
$content
);
return $content;
}
add_filter( 'the_content', 'ad_after_heading' );

На всякий случай дам небольшие пояснения. Если вы успели заметить, за исключением начального и конечного фрагмента функция состоит из одинаковых блоков, каждый из которых отличается лишь содержанием рекламного кода и значениями параметра $num (1, 2,…,n), который определяет порядковый номер подзаголовка (отсчет начинается с верхней части страницы), при этом n — произвольное число. Дальше, думаю, вы разберетесь.

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

Как вариант, вы можете, например, разместить под нечетными подзаголовками контекстную рекламу Adsense, а под четными — РСЯ. Следовательно, можно отследить эффективность каждого рекламного блога в автоматическом режиме. Феерично!

Возможные ошибки при вставке рекламных кодов

Иногда бывает так, что вставка того или иного кода рекламы вызывает критическую ошибку, вследствие чего даже можете потерять доступ к сайту (в том числе поэтому для редактирования шаблонов рекомендую всегда использовать программы с доступом по ФТП наподобие Файлзилла и/или Нотепад++, о которых было упомянуто в начале).

Я на практике столкнулся с подобной ошибкой совсем недавно, когда на одном из проектов попытался добавить рекламные блоки РСЯ. Я уже имею довольно солидный опыт размещения рекламы, поэтому быстро нашел причину. Она заключалась в том, что в оригинальном коде от Яндекса потребовалось заменить одинарные кавычки «»» на двойные «»»»:

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

Шорткоды WP для размещения рекламы внутри статей

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

В отличие от них метод шорткодов является полуавтоматическим и чуть ниже вы поймете, почему. Прежде, чем рассматривать алгоритм использования коротких кодов WordPress (shortcodes), немного объясню, что это такое.

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

Давайте рассмотрим все это на примере контекстной рекламы Google и Yandex. Идея заключается в том, что в известном нам файле functions.php прописывается такая функция:

function ads() {
    return 'Рекламный код Google Adsense';
}
add_shortcode('adsens', 'ads');

Здесь в одинарные кавычки заключается скопированный в вашем аккаунте код рекламного объявления Адсенс. Далее, в первой строке указано название функции (в моем случае это «ads»). В последней строчке название функции связывается с наименованием шорткода («adsens»). Теперь в нужные места страниц со статьями прописываем:

[adsens]

В результате получаем блоки, которые будут послушно появляться в результате действия данной функции (только после опубликования поста!). Можно создать сколь угодно много подобных функций (скажем, «ads1», «ads2» и т.д.) с разными рекламными блоками и выводить их в различных статьях или даже в разных местах одной и той же статьи.

При необходимости изменить что-нибудь в оформлении того или иного блока (например, при редактировании цвета или размера шрифта, то есть при настройке внешнего вида рекламных объявлений Адсенс) просто меняем код в соответствующей функции и рекламные объявления, выводимые на определенные статьи, будут необходимым образом отредактированы.

То же самое можно проделать и с кодом вызова рекламы, полученным из аккаунта РСЯ. Фрагмент, размещаемый в functions.php, будет выглядеть так:

function ads() {
    return 'Рекламный код РСЯ';
}
add_shortcode('yandex', 'ads');

В место, где будут появляться объявления, следует вставить:

[yandex]

Думаю, вам ясно, что полностью копировать и вставлять в functions.php предоставленные мною в качестве примеров кодовые фрагменты не стоит, поскольку они работать не будут. Каждый раз вам нужно использовать свой код РСЯ или Адсенс.

Недостатком метода шорткодов является то, что при необходимости изменить местоположение вставленных таким образом объявлений в нескольких, а тем более во всех, статьях придется переставлять вручную [adsens] или [yandex], что не совсем удобно. Поэтому я и назвал этот способ полуавтоматическим. Достоинством же shortcodes можно отметить возможность размещать рекламные блоки абсолютно в любые места статей.

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

Поделиться с друзьями
Игорь Горнов

Создатель и администратор сайта Goldbusinessnet.com. Участник нескольких успешных проектов и автор более 1000 статей о работе в интернете, создании сайтов, полезных программах и сервисах.

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

Нажимая на кнопку "Отправить комментарий", я даю согласие на обработку персональных данных и принимаю политику конфиденциальности.

  1. Роман

    Да, Игорь, я ошибся в первом сообщении. Да, я спрашивал о выводе рекламных блоков. А у вас выводятся блоки через шорткоды вручную или вы задали через какое-то количество абзацев автоматом?

    Ответить
    1. Игорь Горнов автор

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

      Ответить
  2. Роман

    Игорь, добрый день! У вас сейчас как реализован вывод статей на сайте? Через function.php или через плагин?

    Ответить
    1. Игорь Горнов автор

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

      Ответить
  3. Игорь Горнов автор

    Татьяна, Вы должны поинтересоваться у того, кто ставил этот код. Если у вас сайт Вордпресс, то, скорее всего, это код вызова соответствующей функции отображения рекламных блоков, вставленный в файл functions.php.

    Ответить
  4. Татьяна

    Здравствуйте. Мне ставил рекламные блоки на сайт другой человек. И тот код отличается от первоначального и имеет следующий вид:

    <!-- .test_14 -->

    Что это за код? Заранее благодарна за ответ.

    Ответить
  5. Наталия

    Подскажите, пожалуйста, каким должен быть код, чтобы показывать рекламу только в статьях определенной категории? Сейчас использую нижеприведенный код. Он работает, но показывает рекламу во всех категориях. Т.е. строка с in_category не учитывается.

    function ads_h2( $content ){
        if( ! is_single() )
    		if ( ! in_category(array(2806, 2946)) )
    			return $content;
    		    
    			$ads = 'рекламный код';
    			preg_match_all( '#<h2.*?</h2>#', $content, $match );
    			if( $key = $match[0][1] )
    				$content = str_replace( $key, "$key <div>$ads</div>", $content );
    			return $content;
    }
    add_filter('the_content', 'ads_h2');
    
    Ответить
    1. Игорь Горнов автор

      Наталия, честно говоря я не являюсь гуру языка PHP. В подобных ситуациях лично я обычно использую вот такой код:

      function ads_h2( $content ) {
      if(is_single()&& in_category('2806')) 
      $ads = 'рекламный код';
      if(is_single()&& in_category('2946')) 
      $ads = 'рекламный код';
      preg_match_all( '#<h2.*?</h2>#', $content, $match );
                  if( $key = $match[0][1] )
                      $content = str_replace( $key, "$key <div>$ads</div>", $content );
      
      return $content;
      }
      
      add_filter('the_content', 'ads_h2');

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

      При желании применить более изящное решение, придется обратиться к профильным специалистам (например, на тематических PHP-форумах). Если же этот вариант Вам подойдет, буду только рад. Спасибо за комментарий.

      Ответить
  6. Елена

    Здравствуйте! Помогите разобраться!

    Долго пользовалась плагином Quick AdSense, попробовала Ваш код, но кое-что пока не получилось (после H2 режется текст), вернулась к плагину, но же другому: WP QUADS — Quick AdSense Reloaded.

    В некоторых рекламных статьях у меня была запрещена реклама. Еще плагином. После удаления плагина запрет остался. Вроде бы все хорошо.
    Ввела запрет вручную — тоже все работало. Тоже ОК.
    Но беда в том, что сейчас мне нужно восстановить рекламу, а я не могу. В текстом редакторе кода , поставленного раньше нет.

    Попробовала поставить его сейчас с новым плагином. После сохранения записи реклама пропадает, код остается. Удаляю , но реклама так и не появляется.

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

    С уважением, Елена.

    Ответить
  7. Саша

    У вас код адсенс не выводится в анонсах статей. Как вы это реализовали? У меня после вставки рекламного кода в начале всех записей он показывается и в анонсах.

    Ответить
    1. Игорь Горнов автор

      Саша, но у Вас сейчас вроде бы все в порядке. Но так не должно быть, если Вы вставляете код в правильные шаблоны. В статье же все разъяснено.

      Ответить
  8. Владислав

    Здравствуйте. Рад что нашел Ваш ресурс — почерпнул с него много полезной информации. Уже много времени провел в поисках скрипта для вставки рекламных блоков после подзаголовков H2. Но меня интересует не просто один код вызова рекламы, который будет выводится под каждым заголовком. Возможно Вы знаете скрипт, который будет выводить разные рекламные блоки, по одному на каждый подзаголовок, например, для статей с шестью подзаголовками. Надеюсь, Вы поймете, что я пытаюсь объяснить.

    Ответить
    1. Игорь Горнов автор

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

      Ответить
      1. Владислав

        Все верно, Игорь. Только единственное что я забыл упомянуть — это то, что я ищу скрипт или плагин не только для блоков Google (Ad Exchange), а еще для рекламных блоков Advertur. Чтобы они чередовались и было гарантированно большее чем 800 пикселей расстояние между блоками Ad Exchange (если блоков больше четырех), что указано в правилах системы ЦОП Youlamedia. Я в php не соображаю, я по части контента, но кажется, что лучше в этом конкретном случае скрипт на подобии того, что описано в Вашей статье. Только с соответствующим, более обширным функционалом.

        Ответить
  9. Павел

    Спасибо вам большое за советы, а можно ли сделать, чтобы выводился рекламный код исключительно после второго h2 и нигде больше?

    Ответить
    1. Игорь Горнов автор

      Павел, читайте внимательнее, в статье есть как раз нужный Вам вариант.

      Ответить
      1. Павел

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

        Ответить
        1. Игорь Горнов автор

          Павел, что значит с чередованием? Поясните. Этот код выводит рекламу единственный раз именно после второго по счету сверху заголовка H2 на страницах, где такие заголовки присутствуют.

          Ответить
  10. Роман

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

    Ответить
    1. Игорь Горнов автор

      Роман, попробуйте в файл function.php Вашей темы вставить такой код (даю только для страниц с постами, как я понял, Вам необходим именно такой вариант):

      function ads_h2($content) {
      $ads='Полученный код Google Adsense';
      if (is_single()) {
      $content=preg_replace('#<h2(.*?)</h2>#','<h2\1</h2><div class="adsense-box">'.$ads.'</div>',$content, 1);
       }
       else {
       }
      return $content;
      }
      add_filter('the_content', 'ads_h2');

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

      Ответить
      1. Роман

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

        Ответить
      2. Роман

        что-то не выходит, ничего не отображается..

        Ответить
      3. Роман

        пардон, все в порядке))

        Ответить
      4. Роман

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

        Ответить
        1. Игорь Горнов автор

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

          Ответить
          1. Роман

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

          2. Игорь Горнов автор

            Роман, насколько я знаю, все готовые коды, которые можно найти в интернете, оперируют именно символами HTML. Согласен, это создает некоторые неудобства. Но, к сожалению, у меня такого кода на данный момент нет. Попробуйте обратиться к настоящему специалисту в области WordPress Тимуру Камаеву, вот сюда. Уверен, он поможет. Только отпишитесь потом о результате, пожалуйста.

  11. Александр

    Спасибо!

    Ответить
  12. Алескандр

    Когда вставляю код вручную через Single.php все работает, но не один из установленных плагинов работать не захотел, там где должна быть реклама пустая область и все, как решить? Мне нужно вставить рекламу в середину статьи…

    Ответить
    1. Игорь Горнов автор

      Александр, не знаю, какие плагины Вы использовали, поэтому предлагаю на удачу: Easy AdSenser, AdSense Manager, Adsense Deluxe. Если желаете, можете воспользоваться кодом, который разработал Тимур Камаев и опубликовал на своем блоге. Если что, пишите ему в комментариях, Тимур отзывчивый и обязательный человек, в чем я уже успел убедиться, к тому же профессионал в своей области.

      Ответить
  13. Алексей

    Подскажите пожалуйста а как можно сделать чтобы в конкретных страницах блок рекламы не выводился а в остальных нет? Использую код который выводит рекламу после h2

    Ответить
    1. Игорь Горнов автор

      Алексей, Вы, наверное, имели ввиду, чтобы на одних страницах рекламный блок отображался, а на других нет? Если Вы имеете ввиду страницы записей, то такое возможно, только если вставлять код в нужном месте вручную с помощью шорткодов, для этого они и предназначены. Автоматическую вставку так создать не удастся, ведь страницы, на которых Вы хотите видеть рекламу, выбираются случайным образом и выбор не упорядочен (каждая вторая, третья и т.д.)?

      Ответить
  14. Леха

    Перепробовал кучу плагинов, которые ставят рекламу в центр поста. Ничего не работает, ставит блок в начало и все:(

    В чем может быть проблема то?

    Ответить
    1. Игорь Горнов автор

      Леха, здесь может быть особенности темы играют свою роль.

      Ответить
  15. Mira

    Простите, вопрос не по теме. Мне очень понравился Ваш social plugins. Подскажите, где его скачать? Спасибо большое!

    Ответить
    1. Игорь Горнов автор

      Mira, послал ссылку Вам на почту.

      Ответить
      1. Mira

        Спасибо большое, только вот у меня в WordPress выставляется только зип файл плагина…, но выдает ошибку, а распакованный скрипт не загружается…. Наверное, я чайник… Плагины всегда нормально загружались….

        Ответить
        1. Игорь Горнов автор

          Mira, а как Вы загружали? Попробуйте через фтп, это надежнее. А распаковывать необходимо, потому что иначе работать, естественно, не будет.

          Ответить
          1. Mira

            Спасибо, скоро попробую! Очень благодарна!

  16. Никифор

    У меня тоже с вашим кодом никак не получилось. Жаль. А шорткодами париться не хочется!

    Ответить
  17. telexs

    Сейчас оставлю все как есть. А так я менял значение сначала H2, потом H1 и H3. потом бросил и поставил через шоткоды. Скорее всего моя системная ошибка — я пробовал поставить на другом моем сайте share-forex.com — то же не получилось. Это мои первые сайты. А так спасибо, без ваших статей не поставил бы!

    Ответить
    1. Игорь Горнов автор

      Хорошо, возможно со временем все станет на свои места. Бывает так, что ошибка находится самым неожиданным образом, у меня несколько раз такое случалось.

      Ответить
  18. telexs

    Здравствуйте!
    Все работает отлично, кроме h1-h6
    Код копирую со страницы, вставляю как написано — ничего не получается.
    Все остальные способы вручную работают.
    С плагинами пока не заморачиваюсь.
    Не подскажите, где может быть ошибка.
    Копирую ваш код, добавляю гуглкод и вставляю в конец fuction.php
    Полный ноль.
    Спасибо.

    Ответить
    1. Игорь Горнов автор

      Я вижу на Вашем ресурсе три рекламных блока, по-моему, все в порядке. Больше использовать нельзя по правилам Google Adsense.

      Ответить
      1. telexs

        У меня не получилось с кодом H1-H6. Все остальное получилось — я вставил через шоткоды. Но это долго вручную. Хорошо сайт маленький.

        Ответить
        1. Игорь Горнов автор

          А, понятно. А Вы вставили вместо надписи в коде «Полученный код Google Adsense» реальный код? Если да, тогда посмотрите, какие у Вас реально заголовки и поменяйте, если нужно, их в коде. Если код скопирован верно, он должен работать. Не думаю, что реализация этой опции зависит от темы Вордпресс.

          Ответить
  19. Оксана

    Игорь, спасибо за статью, все очень понятно «разложено по полочкам». Как раз сейчас пытаюсь настроить контекстную рекламу Google Adsense на своем сайте. Я новичек в этом деле, поэтому вопрос (может глупый?): если я хочу разместить блок вверху статьи и в конце, мне надо создать два клиентских канала для мониторинга рекламы, так вот, могу ли я для этих каналов использовать один и тот же рекламный блок, или для каждого канала надо свой блок создавать?

    Ответить
    1. Игорь Горнов автор

      Оксана, вопрос совсем не глупый. Безусловно, можно, но есть ограничение: не более 5 клиентских канала для каждого рекламного блока, по крайней мере, совсем недавно было так. Но обойти это ограничение можно, например, создав точно такой же блок по оформлению, но назвав его по-другому.

      Ответить
  20. Павел

    Могу ли я одну и туже рекламу выводить на странице несколько раз ?

    Ответить
    1. Игорь Горнов автор

      Павел, если Вы имеете ввиду контекстную рекламу Google Adsense, то правила запрещают выводить на страницу более трех блоков.

      Ответить
  21. Марат

    Здравствуйте. Ответьте пожалуйста. Как сделать вывод рекламы не после H1-H6, а после каждой картинке, но не больше 9?

    Ответить
    1. Игорь Горнов автор

      Марат, если Вы имеете ввиду картинки в статьях, то, естественно, с помощью шорткодов. Таким способом можно вставлять рекламу в любое место. Однако будьте осторожны с размещением рекламных блоков адсенс рядом с картинками, чтобы не нарушать правил контекстной рекламы (не вводить пользователей в заблуждение и не набрать незаконных кликов).

      Ответить
  22. Алексей

    Пользуюсь плагином QUICK ADSENSE. Устраивает полностью, не создает большой нагрузки на мой сайт. По поводу установки рекламы с помощью shortcodes. Читал про него у Евгения Попова недавно в его курсе по созданию сайта на WORDPRESS. Курс древний, но актуальности не теряет.Но понял у него, что в середину статьи устанавливать можно только ручками. У вас ничего не сказано по этому поводу. Ведь заголовков h2-h6 может быть несколько. А ведь есть ограничения на контекстную рекламу. Хотелось бы услышать мнение по этому вопросу.

    Ответить
    1. Игорь Горнов автор

      Да, Алексей, вопрос актуальный для тех, кто пишет объемные мануалы, в этом недостаток шорткодов. Но в конце концов, ничего идеального в мире нет. Тут уж надо выбирать:либо плагины, либо часть работы выполнять вручную. Лично я вставляю shotcodes вручную, потому что у меня тоже есть статьи довольно длинные с несколькими заголовками. Также очень важно принять решение на основе анализа эффективности google adsense, бывают такие случаи, когда контекстная реклама эффективнее при меньшем числе блоков на странице. Об эффективности контекста будет отдельный пост на основе моего личного опыта.

      Ответить
  23. Василь

    Теперь, распечатав пост, могу сам вставить код. Вы поняли?! СЩШники!

    Ответить
  24. Василий

    А я у себя Яндекс.Директ разместил в файле Одна запись, а середину статьи вставляю вручную, в нужное место.

    Ответить