Рекламный блок в тексте статьи
Самое лучшее в книге то, что она не обрывается на самом интересном месте для рекламной вставки...
Знаю, что это самый изощренный и пожалуй, ненавистный со стороны пользователя способ вставлять рекламный блок в текст статьи, но в некоторых, редких, случаях брезгать таким способом глупо, впрочем, это только лишь мое мнение.
Кстати, касательно рекламы на блогах поднял тему небезызвестный блогер — Сосновский. Я полностью с ним солидарен в этом вопросе и не на секунду не согласен с теми, кто писал в комментариях, что его статья — попытка оправдаться.
А теперь по теме: как вставить рекламу в контент
Представляю хак для WordPress, благодаря которому можно легко установить рекламный блок в текст статьи, например, рекламный блок Google AdSense или ЯДирект.
Уже не помню где, но где-то я видел реализацию этой задачи, только было описано как вставить рекламный блок в текст статьи после тега <!--more-->. А как быть если на сайте автор в принципе не пользуется этим тегом, как тогда вставить рекламу на все страницы? Ответ на этот вопрос — такой вот мой код:
<?php
/**
* Вставляет рекламный блок в первый перенос строки или первый закрывающий
* тег `</p>` или `</table>` спустя определенное количество символов.
*
* @param number $nu Спустя сколько символов искать перенос строки и вставлять рекламу?
*
* version: 0.3
*/
add_filter( 'the_content', 'kama_content_advertise', -10 );
function kama_content_advertise( $text, $num = false ) {
if( ! is_singular() ){
return $text;
}
if( ! $num ){
$num = 400;
}
ob_start();
?>
<div class="kama-inline-ads" style="float:right; margin:0 0 1em 1.5em;">
здесь рекламный код
</div>
<?php
$adsense = ob_get_clean();
// Раскомментируйте, если нужно вставить блок сразу перед тегом <!--more-->
# return str_replace('<!--more-->', $adsense.'<!--more-->', $text);
return preg_replace( '~[^^]{' . $num . '}.*?(?:\r?\n\r?\n|</p>|</table>)~su', "\${0}$adsense", trim( $text ), 1 );
}
Замените "здесь рекламный код" на код с вашей рекламой.
Код вставляет рекламный блок в первый попавшейся перенос строки или закрывающий тег </p> или тег </table> спустя определенное количество символов (задается в переменной $nu). Т.е. в данном случае в тексте статьи будет пропущено 400 символов, после которых будет найден первый перенос строки (или тег </p>) и перед ним будет вставлен рекламный блок.
Если нужно вставить рекламный блок перед тегом more
Так же на всякий, пожарный случай, я предусмотрел случай, когда нужно вставлять рекламный блок перед тегом <!--more-->, для этого, раскомментируйте предпоследнюю строку.
Реклама только для старых постов
Если есть необходимость показывать рекламу только для постов срок давности которых, скажем, 7 дней, то используйте такой код:
add_filter('the_content', 'kama_content_advertise', -10);
function kama_content_advertise( $text ){
$days = 7; // через сколько дней, спустя дату публикации поста, показывать рекламу.
$nu = 400; //спустя сколько символов искать перенос строки и вставлять рекламу?
$offset = (int) time() - (int) strtotime($GLOBALS['post']->post_date);
if($offset < (3600*24*$days) ) return $text;
//Код рекламы
$adsense = '
<div style="float:right;margin:0 0 10px 15px;">
здесь рекламный код
</div>
';
return preg_replace('@([^^]{'.$nu.'}.*?)(\r?\n\r?\n|</p>)@', "\\1$adsense\\2", trim($text), 1);
}
Размещать рекламу таким образом может быть удобно, когда вы не хотите отвлекать своих постоянных читателей рекламой в новых статьях. Ведь именно постоянные читатели в первую очередь заходят прочесть ваш очередной шедевр.