пр. Мира 620000 Россия +7900-000-00-00
Логотип блога интернет-бродяги

Как вставить рекламу на сайт WordPress

Последнее обновление - 18 ноября 2021 в 13:00

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

И тут на помощь приходят решения без плагинов. Вставляешь коротенький код в волшебный файл functions.php рабочей темы, и никаких проблем — рекламный баннер партнёрской программы, объявление Google AdSense или РСЯ, да и просто любой текст, привлекающий внимание, оказывается в нужном месте нужной страницы сайта. Места для размещения рекламы могут быть разными: в начале или конце текста, после определённого абзаца, заголовка или в середине поста.

При помощи плагинов

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

Первый на очереди — Easy AdSense Ads — Ad Inserter & AdSense Ad Manager. Очень мне понравился этот плагин за его функциональность. С его помощью можно настроить показ рекламы в записях и (или) на страницах. Можно запретить вывод рекламных блоков в определённых категориях. Работает он и с AMP страницами.

Плагин Easy AdSense Ads

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

Второй плагин платный и обладает такими широкими возможностями, о которых я даже не мог догадываться. Называется он AdsPlace’r Pro. Разработчики плагина предлагает его приобрести за 1099 рублей на сегодняшний день.

Плагин AdsPlace’r Pro

Несмотря на мощный функционал, AdsPlace’r Pro прост в использовании, полностью на русском языке и подойдёт даже новичкам для эффективного использования по увеличению дохода от рекламы. Автор гарантирует техническую поддержку, вечную лицензию и обновления, поскольку сам использует этот плагин на всех своих рабочих проектах, а значит, заинтересован в его развитии.

Малого того, что рекламные блоки можно устанавливать где угодно, плагин имеет 13 параметров таргетинга по странам, времени, операционным системам и браузерам и так далее. Ещё одна фишка от автора AdsPlace’r Pro — плагин можно «пощупать» в демо-версии на демонстрационном сайте до его покупки!

Я не буду здесь перечислять все достоинства AdsPlace’r Pro, так как никто, кроме его автора, лучше это не сделает. Поэтому, посмотрите что может плагин на официальном сайте.

Реклама на сайте без плагинов

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

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

// Вставляем любой код после выбранного абзаца
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;
    }

Или такой код, если хотите вывести рекламу после определённого абзаца, но отключить её показ в определённых постах:

// Выводит рекламные блоки после определенного абзаца статьи
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;
}

Чтобы вывести рекламу на страницах:

// Выводит рекламные блоки после определенного абзаца страницы
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;
}

Чтобы запретить показ рекламы на некоторых страницах:

// Выводит рекламные блоки после определенного абзаца страницы
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;
}

А этот код поможет воткнуть рекламный баннер в середину всех записей:

//вставка рекламы в середину записи
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.

//реклама в середине записи (например, для категории с 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.

// Вставляем любой код в конце статьи
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 указать своё значение числа символов.

//после определённого числа символов
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.

//вместо <?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++;
    }
}
?>

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

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, к примеру.

Ещё иногда я размещаю рекламу в произвольных местах. Для этого пользуюсь шорткодами. В данном случае работает вот такой код:

/* Вывод рекламных блоков шоткодами */
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].

И ещё способ вставить рекламу в любом месте записи определённой категории. Используем такой код:

<div class="ads1">
<?php if ( this_my_category( 124 ) ) {echo 'Здесь код рекламы для рубрики с ID 124 и её подрубрик';} ?>
</div>

Его надо прописать в месте, где нужна реклама. А в файл functions.php добавить этот код:

/*Проверятся подкатегория на вхождение в категорию */
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. Ищем начало цикла:

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

Перед ним вставим строку:

<?php $postcount = 0; ?>

А после:

<?php $postcount++; ?>

Получится вот так:

<?php $postcount = 0; ?>
<?php if (have_posts()) : while (have_posts()) : the_post(); ?>
<?php $postcount++; ?>

Теперь ищем конец цикла:

<?php endwhile; endif; ?>

И перед этой строкой вставим:

<?php if($postcount==3){ ?>
здесь ваш замечательный и неповторимый рекламный код
<? } ?>

Цифра 3 означает только то, что реклама будет показана после третьего анонса на главной странице.

И ещё способ вывести рекламу, например, в сайдбаре для определённой страницы. В файл sidebar.php вставь:

<?php if( is_single(987) ){  ?>
Этот блок рекламы показать, когда открыт пост 987
<?php } else { ?>
Этот блок рекламы показать на остальных страницах сайта или оставить пустым
<?php } ?>

Если в пост надо воткнуть что-то и пост принадлежит к определённой категории, то выручит такой код:

<?php if ( in_category( array( 11, 12 ) )) { ?>
// Здесь то, что нужно показать, если пост принадлежит категориям 11, 12
<?php } ?>

Вот такое разнообразие способов по размещению рекламных блоков на сайте, работающем под управлением WordPress. Есть попроще, есть посложнее, платные и бесплатные. Выбирайте и тестируйте!

Друзья, плюсаните, вдруг пригодится!

Почитайте похожие материалы

Об авторе: Hobo

2 Comments

  1. Евгений:

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

    1. Hobo:

      Без проблем! Рад, что материал оказался полезен.

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

Ваш адрес email не будет опубликован. Обязательные поля помечены *

3 × = 21

 

Мы используем cookie-файлы для наилучшего представления нашего сайта. Продолжая использовать этот сайт, вы соглашаетесь с использованием cookie-файлов.
Принять