PHP-коды для установки рекламных блоков

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

Например отображать рекламу:

  • после первого абзаца, изображения
  • в середине статьи
  • после анонса, тега more
  • отображать только в старых записях (недельной давности)

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

После определенного количества символов

Реклама будет отображаться перед первым абзацем после первых 600 символов на страницах записей с длинной более 1700 символов.

Вставьте этот код в файл functions.php:

function advert_after_n_chars($cont) {
 // if post is longer than 1700 characters
 $enable_length = 1700;
 // insert after the first </p> after 600 characters
 $aft_char = 600;
 if (is_single() && strlen($cont) > $enable_length) {
  $bef_cont = substr($cont, 0, $aft_char);
  $aft_cont = substr($cont, $aft_char);
  $aft_cont = explode('</p>', $aft_cont);
  $text = '
   <!-- тут код adsense -->
  ';
  array_splice($aft_cont, 1, 0, $text);
  $aft_cont = implode('</p>', $aft_cont);
  return $bef_cont . $aft_cont;
 }
 else {
  return $cont;
 }
}
add_filter('the_content', 'advert_after_n_chars');

Установка обтекаемой рекламы после n-символов

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

 

Установка рекламного блока

 

Рекламный блок будет отображаться после первых 800 символов.

Добавляем код в файл functions.php:

function advert_after_n_symbols($text){
 $aft_symbols = 800;
 $adsense_block = '
  <div style="float:right;margin:0 0 10px 15px;">
   <!-- тут код рекламного блока -->
  </div>
 ';
 if (is_single()) {
  $text = preg_replace('@([^^]{'.$nu.'}.*?)(\r?\n\r?\n|)@', "\\1$adsense_block\\2", trim($text), 1);
 }
 return $text;
}
add_filter('the_content', 'advert_after_n_symbols', -10);

Установка рекламы после каждого H2 заголовка

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

Добавляем код в файл functions.php:

function ads_after_h2($the_content) {
 $ads='
  <!-- тут код adsense -->
 ';
 if (is_single()) {
  $the_content=preg_replace('#<h2(.*?)</h2>#','<h2\1</h2><div class="ads_content">'.$ads.'</div>',$the_content);
 } 
 return $the_content;
}
add_filter('the_content', 'ads_after_h2');

Отображение рекламного блока после n-го абзаца

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

Находим в файле single.php код:

<?php the_content();?>

И заменяем его на код:

<?php
$paragraphAfter= 3; //display after the first paragraph
$content = apply_filters('the_content', get_the_content());
$content = explode("</p>", $content);
for ($i = 0; $i <count($content); $i++ ) {
 if ($i == $paragraphAfter) { ?>
  <div>Тут вставляем код вашего рекламного блока</div>
 <?php }
 echo $content[$i] . "</p>";
} ?>

Установка рекламного блока при помощи шорт-кода

Вставляем код в файл functions.php:

function advert_code() {
 return '
  <!-- тут код adsense -->
 ';
}
add_shortcode('elims_adv', 'advert_code');

Когда вы хотите отображать рекламный блок в определенном месте текста записи/страницы просто вставьте в то место следующий текст (шорт-код):

[elims_adv]

Установка рекламного блока на главной странице после первого анонса

В большинстве случаев в блогах wordpress на главной странице отображаются 10 анонсов последних опубликованных записей. Среди SEO-шников  хорошим местом считается установка рекламы после первого анонса.

В файле index.php ищем код:

<?php endwhile; else: ?>

И вставляем перед ним код:

<?php if ($count == 1) : ?>
 <!-- тут код рекламного блока -->
<?php endif; $count++; ?>

Вместо цифры 1 можно указать, например, цифру 4 - тогда рекламный блок будет отображаться после 4-го анонса.

Рекламный блок в начале статьи по истечении 14 дней после публикации

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

Добавляем код в файл functions.php:

function ads_after_time($text){
 $days = 14; 
 $offset = (int) time() - (int) strtotime($GLOBALS['post']->post_date);
 $interval = 3600*24*$days;
 if($offset < $interval ) return $text; 
 $ads_block = '
  <div style="float:left; margin:10px">
   <!-- тут код adsense -->
  </div>
 ';
 return $ads_block.$text;
}
add_filter('the_content', 'ads_after_time', -10);

Установка рекламы в записи после анонса (тега more)

Тоже достаточно эффективное место для рекламы, по мнению вебмастеров.

Добавляем следующий код в файл functions.php:

function advert_after_more($content) {
 $advert_block='
  <!-- тут код adsense -->
 ';
 if (is_single()) {
  $content=preg_replace('#<span.*?id="more-(.*?)".*?></span>#','<span id="more-\1"></span></p><center>'.$advert_block.'</center><BR><p style="text-align: justify;">',$content);
 }
 return $content;
}
add_filter('the_content', 'advert_after_more');
Понравилось? =) Поделись с друзьями:

Обсуждение записи “PHP-коды для установки рекламных блоков”

  1. Андрей says:

    Доброго времени суток.

    Использую код «выводить рекламу после определённого абзаца»

    А что если необходимо выводить несколько блоков,к примеру, два. Приходится дублировать код в файле функшионс (заменив имя функции). Может есть возможность уместить всё в одном коде для максимальной обработки?

    И ещё такой момент. Как можно модернизировать код, чтобы к примеру если указан 8 абзац, но если в статье всего 7 абзацев, то реклама не будет выведена вовсе. А можно сделать так, чтобы она выводилась в любом случае в последнем абзаце (к примеру последнем 7-ом), при условии, чем их меньше чем заданное?
    А если 8 абзац есть, то всё работало как обычно.

    Заранее спасибо за ответ

  2. Владимир Демянович (elims.org.ua) says:

    Здравствуйте.

    Да, это можно сделать, Вам нужно лишь немного разобраться в PHP или заплатить тому, кто готов подкорректировать код вместо Вас =)

Обсудить