Flector

Как разместить рекламные баннеры Adsense в записях?

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

//вставка рекламы adsense после текста записи start 
function wph_add_adsense1($content) {
    if (!is_single()) return $content;
    $adsense1 = '
    тут ваш скрипт эдсенса
    ';
    return $content.$adsense1;
}
add_filter('the_content', 'wph_add_adsense1');
//вставка рекламы adsense после текста записи end

Для размещения рекламы до контента записи (после заголовка) используйте код:

//вставка рекламы adsense до текста записи start 
function wph_add_adsense2($content) {
    if (!is_single()) return $content;
    $adsense2 = '
    тут ваш скрипт эдсенса
    ';
    return $adsense2.$content;
}
add_filter('the_content', 'wph_add_adsense2');
//вставка рекламы adsense до текста записи end

Рекламу можно разместить после тега <!--more-->:

//вставка рекламы adsense после тега more start 
function wph_add_adsense3($content) {
   if (!is_single()) return $content;
   $adsense3 = '
   тут ваш скрипт эдсенса
   ';
   $content = get_post_field('post_content', get_the_ID());
   $content_parts = get_extended($content);
   return $content_parts['main'] . $adsense3 . $content_parts['extended'];
}
add_filter('the_content', 'wph_add_adsense3', 1);
//вставка рекламы adsense после тега more end

Помните, что если тега <!--more--> в записи нет, то реклама будет выведена после всего текста записи. Код можно модернизировать, чтобы не выводить рекламу при отсутствии в записи тега <!--more-->:

//вставка рекламы adsense после тега more start 
function wph_add_adsense3($content) {
   if (!is_single() or !has_more()) return $content;
   $adsense3 = '
   тут ваш скрипт эдсенса
   ';
   $content = get_post_field('post_content', get_the_ID());
   $content_parts = get_extended($content);
   return $content_parts['main'].$adsense3.$content_parts['extended'];
}
add_filter('the_content', 'wph_add_adsense3', 1);
//вставка рекламы adsense после тега more end
 
//условный тег проверки more в записи start
function has_more() {
    global $post;
    if (empty($post)) return;
    return (bool) preg_match('/<!--more(.*?)?-->/', $post->post_content);
}
//условный тег проверки more в записи end

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

//добавление рекламы после указанного числа параграфов start 
function wph_add_adsense4($content) {
    if (!is_single()) return $content;
    $adsense4 = '
    тут ваш скрипт эдсенса
    ';
    $show_after_p = 1; //число абзацев
    $result = '';
    if(substr_count($content, '<p>') > $show_after_p) {
        $paragraphs = explode("</p>", $content);
        $p_count = 1;
        foreach($paragraphs as $paragraph) {
            $result .= $paragraph;
            if($p_count == $show_after_p) {$result .= $adsense4;}
            $p_count++;
        }
    }
    return $result;
}
add_filter('the_content', 'wph_add_adsense4', 99);
//добавление рекламы после указанного числа параграфов end

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

//добавление рекламы после указанного числа параграфов с конца start 
function wph_add_adsense5($content) {
    if (!is_single()) return $content;
    $adsense5 = '
    тут ваш скрипт эдсенса
    ';
    $show_after_p = 2; //число абзацев
    $all_p = substr_count($content, '<p>');
    $result = '';
    if($all_p > $show_after_p) {
        $paragraphs = explode("</p>", $content);
        $p_count = 1;
        foreach($paragraphs as $paragraph) {
            $result .= $paragraph;
            if($p_count == $all_p-$show_after_p) {$result .= $adsense5;}
            $p_count++;
        }
    } else {
        return $content;
    }
    return $result;
}
add_filter('the_content', 'wph_add_adsense5', 99);
//добавление рекламы после указанного числа параграфов с конца end

Если в этом коде установить переменную $show_after_p = 1, то реклама всегда будет выводиться перед последним параграфом записи.

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

//вставка рекламы после текста записи в зависимости от рубрики start 
function wph_add_reklama($content) {
    if (!is_single()) return $content;
    $reklama = "";
    if (in_category(array(1,2,3,4,5))) {
        $reklama = '
        тут ваш скрипт эдсенса
        ';
    }
    if (in_category(array(6,7,8,9,10))) {
        $reklama = '
        тут ваш скрипт директа
        ';
    }
    return $content.$reklama;
}
add_filter('the_content', 'wph_add_reklama');
//вставка рекламы после текста записи в зависимости от рубрики end

Если у вас есть какие-то вопросы - пишите в комментариях, я вам обязательно постараюсь помочь.


Комментарии (4 комментария)
  1. gunvor:

    для РСЯ как полагаю эти коды не годятся? мне надо рся разместить, недалеко от заголовка, где-то на втором абзаце бы.

  2. Александр, здравствуйте! У меня на сайте есть несколько коротких постов. Есть потребность отменить в этих постах показ рекламы после абзацев и в середине поста, вставив в пост шорткод. Что нужно добавить в коды вставки рекламы?

  3. Евгений:

    А как убрать показ рекламы с нескольких записей.

Написать комментарий

Для вставки кода воспользуйтесь кнопкой "Код". Используйте предпросмотр!