Вставить рекламу на сайт WordPress не представляет какой-либо сложности. Наиболее просто эту затею можно осуществить при помощи многочисленных плагинов. В репозитории WordPress их предостаточно. Сам я пользовался некоторыми из них довольно успешно. Но не всегда тот или иной плагин отвечал абсолютно всем моим требованиям.
И тут на помощь приходят решения без плагинов. Вставляешь коротенький код в волшебный файл functions.php рабочей темы, и никаких проблем — рекламный баннер партнёрской программы, объявление Google AdSense или РСЯ, да и просто любой текст, привлекающий внимание, оказывается в нужном месте нужной страницы сайта. Места для размещения рекламы могут быть разными: в начале или конце текста, после определённого абзаца, заголовка или в середине поста.
Кстати, почитайте о том, как пройти модерацию в РСЯ. Как это сделать с первого раза и какая требуется посещаемость для сайта.
При помощи плагинов
Приведу в качестве примера парочку плагинов, один из которых бесплатный, а за другой придётся заплатить. Их настройки просты, а функционала достаточно, чтобы разместить рекламу в нескольких локациях страниц сайта.
Первый на очереди — Easy AdSense Ads — Ad Inserter & AdSense Ad Manager. Очень мне понравился этот плагин за его функциональность. С его помощью можно настроить показ рекламы в записях и (или) на страницах. Можно запретить вывод рекламных блоков в определённых категориях. Работает он и с AMP страницами.

Что касается мест размещения рекламы, Easy AdSense Ads способен показать её не только в записях, но и на главной странице или страницах категорий. В записях баннер можно показать сразу под тайтлом, после первого параграфа или первого изображения, в середине или конце поста. Кроме того, в мобильной версии сайта доступен показ рекламы отличной от той, что будет выведена в десктопе. Всем хорош Easy AdSense Ads, но вот незадача — не обновлялся около года уже.
Второй плагин платный и обладает такими широкими возможностями, о которых я даже не мог догадываться. Называется он AdsPlace’r Pro. Разработчики плагина предлагает его приобрести за 1099 рублей на сегодняшний день.

Несмотря на мощный функционал, AdsPlace’r Pro прост в использовании, полностью на русском языке и подойдёт даже новичкам для эффективного использования по увеличению дохода от рекламы. Автор гарантирует техническую поддержку, вечную лицензию и обновления, поскольку сам использует этот плагин на всех своих рабочих проектах, а значит, заинтересован в его развитии.
Малого того, что рекламные блоки можно устанавливать где угодно, плагин имеет 13 параметров таргетинга по странам, времени, операционным системам и браузерам и так далее. Ещё одна фишка от автора AdsPlace’r Pro — плагин можно «пощупать» в демо-версии на демонстрационном сайте до его покупки!
Я не буду здесь перечислять все достоинства AdsPlace’r Pro, так как никто, кроме его автора, лучше это не сделает. Поэтому, посмотрите что может плагин на официальном сайте.
Реклама на сайте без плагинов
А теперь посмотрите, какие есть решения по размещению рекламных блоков на сайте без использования плагинов. Для этого достаточно дополнить файл functions.php некоторыми функциями. Обычно я пользуюсь кодами для вставки рекламы после первого абзаца, в середине статьи и после текста поста. С них и начну.
Вот этот код поможет вставить рекламу не только после первого, но и после любого абзаца на ваш выбор. В строке 6 меняем значение и всё готово. Однако обратите внимание, что этот код будет работать только с баннерной рекламой. Например, код РСЯ в данном случае работать не будет, как и сам сайт.
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
// Вставляем любой код после выбранного абзаца add_filter( 'the_content', 'wpse_ad_content' ); function wpse_ad_content( $content ) { if( !is_single() ) return $content; $paragraphAfter = 1; //Введите номер абзаца, после которого вставляем. $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; } |
Или такой код, если хотите вывести рекламу после определённого абзаца, но отключить её показ в определённых постах:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
// Выводит рекламные блоки после определенного абзаца статьи add_filter( 'the_content', 'wpse_ad_content' ); function wpse_ad_content( $content ) { if( !is_single() ) return $content; $paragraphAfter = 1; //Введите номер абзаца, после которого вставляем. $content = explode ( "</p>", $content ); $new_content = ''; for ( $i = 0; $i < count ( $content ); $i ++ ) { if ( $i == $paragraphAfter ) { if ( ! is_single ( array(4, 222, 333, 444) ) ) { $new_content .= ' здесь ваш код рекламы '; } } $new_content .= $content[$i] . "</p>"; } return $new_content; } |
Чтобы вывести рекламу на страницах:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
// Выводит рекламные блоки после определенного абзаца страницы add_filter( 'the_content', 'wpse_ad_content1' ); function wpse_ad_content1( $content ) { if( !is_page() ) return $content; $paragraphAfter = 2; //Введите номер абзаца, после которого будет выводиться реклама. $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; } |
Чтобы запретить показ рекламы на некоторых страницах:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
// Выводит рекламные блоки после определенного абзаца страницы add_filter( 'the_content', 'wpse_ad_content1' ); function wpse_ad_content1( $content ) { if( !is_page() ) return $content; $paragraphAfter = 1; //Введите номер абзаца, после которого будет выводиться реклама. $content = explode ( "</p>", $content ); $new_content = ''; for ( $i = 0; $i < count ( $content ); $i ++ ) { if ( $i == $paragraphAfter ) { if ( ! is_page ( array(77) ) ) { $new_content .= 'здесь ваш супер клёвый код рекламы'; } } $new_content .= $content[$i] . "</p>"; } return $new_content; } |
А этот код поможет воткнуть рекламный баннер в середину всех записей:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 |
//вставка рекламы в середину записи function the_content_ads( $html ) { $ads = 'Здесь ваш код рекламы, баннера и т.д.'; $tempcontent = $html; $tempcontent = strip_tags($tempcontent); $num = ceil(iconv_strlen($tempcontent) / 2); if ( is_single() ) { return preg_replace('~[^^]{'. $num .'}.*?(?:\r?\n\r?\n|</p>|</figure>|</ul>|</pre>|</table>)~su', "\${0}$ads", trim( $html ), 1); } else { return $html; } } add_filter( 'the_content', 'the_content_ads' ); |
Этот код немного модифицирован. С его помощью реклама появится в середине записей, но не всех, а только только для выбранной категории. Просто измените значение в строке 11.
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
//реклама в середине записи (например, для категории с ID40) start function the_content_ads( $html ) { $ads = 'тут ваш код рекламы'; $tempcontent = $html; $tempcontent = strip_tags($tempcontent); $num = ceil(iconv_strlen($tempcontent) / 2); if ( in_category( array(40)) ) { return preg_replace('~[^^]{'. $num .'}.*?(?:\r?\n\r?\n|</p>|</figure>|</ul>|</pre>|</table>)~su', "\${0}$ads", trim( $html ), 1); } else { return $html; } } add_filter( 'the_content', 'the_content_ads' ); //реклама в середине записи finish |
В конце статьи вставить рекламу нетрудно. Можно отредактировать файл single.php, но универсальный способ — снова при помощи файла functions.php.
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
// Вставляем любой код в конце статьи add_filter( 'the_content', 'prefix_insert_post_ads' ); function prefix_insert_post_ads( $content ) { $ad_code = 'Здесь код рекламы, баннера'; if ( is_single() && ! is_admin() ) { $closing_p = '</p>'; $paragraphs = explode( $closing_p, $content ); $count_p = count($paragraphs); foreach ($paragraphs as $index => $paragraph) { if ( trim( $paragraph ) ) { $paragraphs[$index] .= $closing_p; } if ( $count_p == ($index + 1) ) { $paragraphs[$index] .= $ad_code; } } return implode( '', $paragraphs ); } return $content; } |
Если поставлена задача размещения баннера после определённого числа символов, работает этот способ. В строке 3 указать своё значение числа символов.
|
1 2 3 4 5 6 7 8 9 10 11 12 13 |
//после определённого числа символов function kama_content_advertise($text){ $nu = 400; $adsense = <<<HTML <div style="float:right;margin:0 0 10px 15px;"> Здесь вставить рекламный код </div> HTML; // return str_replace('<!--more-->', $adsense.'<!--more-->', $text); return preg_replace('@([^^]{'.$nu.'}.*?)(\r?\n\r?\n| )@', "\\1$adsense\\2", trim($text), 1); } add_filter('the_content', 'kama_content_advertise', -10); |
Чтобы реклама красовалась в конце записи, но не после всего текста, а перед последним абзацем, немного изменим файл, который отвечает за вывод одиночных записей. Обычно это файл single.php.
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
//вместо <?php the_content(); ?> вставить этот код: <?php $show_after_p = 1; $content = apply_filters('the_content', get_the_content()); $all_p = substr_count($content, '<p>'); if($all_p > $show_after_p) { $contents = explode("</p>", $content); $p_count = 1; foreach($contents as $content) { echo $content; if($p_count == $all_p-1 ) { ?> Сюда вставь рекламный код! <? } echo ""; $p_count++; } } ?> |
Решили вставить рекламу после подзаголовков внутри поста? Никаких проблем. Код, который вы увидите ниже, реализует такую возможность. Различные источники утверждают, что реклама, которая следует сразу после подзаголовка, работает наиболее эффективно.
|
1 2 3 4 5 6 7 8 |
function ads_h2($content) { $ads=' здесь вставить код рекламы '; $content=preg_replace('#<h2 (.*?)</h2>#','</h2><h2 \1</h2><p style="text-align: center;">'.$ads.'</p>',$content); return $content; } add_filter('the_content', 'ads_h2');</h2> |
Вставляем код в файл functions.php. Рекламный блок появится после подзаголовков с тегом h2. Нужна реклама после подзаголовков более низкого уровня? Смените h2 на h3, к примеру.
Ещё иногда я размещаю рекламу в произвольных местах. Для этого пользуюсь шорткодами. В данном случае работает вот такой код:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 |
/* Вывод рекламных блоков шоткодами */ function ads1() { return 'Здесь код рекламы №1'; } add_shortcode('adsense1', 'ads1'); function ads2() { return 'Здесь код рекламы №2'; } add_shortcode('adsense2', 'ads2'); function ads3() { return 'Здесь код рекламы №3'; } add_shortcode('adsense3', 'ads3'); |
Как это работает? В том месте статьи, где нужен рекламный блок, вставляем шорткоды [adsense1], [adsense2] и [adsense3].
И ещё способ вставить рекламу в любом месте записи определённой категории. Используем такой код:
|
1 2 3 |
<div class="ads1"> <?php if ( this_my_category( 124 ) ) {echo 'Здесь код рекламы для рубрики с ID 124 и её подрубрик';} ?> </div> |
Его надо прописать в месте, где нужна реклама. А в файл functions.php добавить этот код:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
/*Проверятся подкатегория на вхождение в категорию */ function post_is_in_descendant_category( $cats, $_post = null ){ foreach ( (array) $cats as $cat ) { $descendants = get_term_children( (int) $cat, 'category'); if ( $descendants && in_category( $descendants, $_post ) ) return true; } return false; } function this_my_category ($cats){ post_is_in_descendant_category( $cats, $_post = null ); if ( in_category( $cats ) || post_is_in_descendant_category( $cats ) ) {return true;} else {return false;} } |
Как вывести рекламу между анонсами постов на главной странице сайта? Достаточно просто. Будем работать с файлом, который отвечает за вывод главной страницы. Например, таким файлом может быть index.php. Ищем начало цикла:
|
1 |
<?php if (have_posts()) : while (have_posts()) : the_post(); ?> |
Перед ним вставим строку:
<?php $postcount = 0; ?>
А после:
<?php $postcount++; ?>
Получится вот так:
|
1 2 3 |
<?php $postcount = 0; ?> <?php if (have_posts()) : while (have_posts()) : the_post(); ?> <?php $postcount++; ?> |
Теперь ищем конец цикла:
<?php endwhile; endif; ?>
И перед этой строкой вставим:
|
1 2 3 |
<?php if($postcount==3){ ?> здесь ваш замечательный и неповторимый рекламный код <? } ?> |
Цифра 3 означает только то, что реклама будет показана после третьего анонса на главной странице.
И ещё способ вывести рекламу, например, в сайдбаре для определённой страницы. В файл sidebar.php вставь:
|
1 2 3 4 5 |
<?php if( is_single(987) ){ ?> Этот блок рекламы показать, когда открыт пост 987 <?php } else { ?> Этот блок рекламы показать на остальных страницах сайта или оставить пустым <?php } ?> |
Кстати, почитайте, как сделать «липкий» (фиксированный) блок в сайдбаре на js на WordPress-сайте без плагина. Удобно для вставки рекламных блоков в лонгридах.
Если в пост надо воткнуть что-то и пост принадлежит к определённой категории, то выручит такой код:
|
1 2 3 |
<?php if ( in_category( array( 11, 12 ) )) { ?> // Здесь то, что нужно показать, если пост принадлежит категориям 11, 12 <?php } ?> |
Вот такое разнообразие способов по размещению рекламных блоков на сайте, работающем под управлением WordPress. Есть попроще, есть посложнее, платные и бесплатные. Выбирайте и тестируйте!


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