Рекламный блок в тексте статьи
Самое лучшее в книге то, что она не обрывается на самом интересном месте для рекламной вставки...
Знаю, что это самый изощренный и пожалуй, ненавистный со стороны пользователя способ вставлять рекламный блок в текст статьи, но в некоторых, редких, случаях брезгать таким способом глупо, впрочем, это только лишь мое мнение.
Кстати, касательно рекламы на блогах поднял тему небезызвестный блогер — Сосновский. Я полностью с ним солидарен в этом вопросе и не на секунду не согласен с теми, кто писал в комментариях, что его статья — попытка оправдаться.
А теперь по теме: как вставить рекламу в контент
Представляю хак для 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); }
Размещать рекламу таким образом может быть удобно, когда вы не хотите отвлекать своих постоянных читателей рекламой в новых статьях. Ведь именно постоянные читатели в первую очередь заходят прочесть ваш очередной шедевр.