Реклама в тексте статьи WordPress: вставляем рекламный блок

## Реклама в тексте статьи WordPress

Лучшее в книге — это то, что она не прерывается на самом интересном месте для вставки рекламы.

### Вставка рекламы в текст поста

Хочу предложить удобный способ вставки рекламного блока в текст статьи на WordPress. Например, вы можете вставить блок рекламы Google AdSense или Яндекс.Директ. 

Возможно, вы сталкивались с тем, как вставлять рекламный блок после тега <!--more-->. Но что делать, если автор сайта этот тег не использует? Как тогда добавить рекламу на все страницы? На этот вопрос у меня есть ответ — смотрите код ниже.

### Код для вставки рекламного блока

Вот пример кода, который решает данную задачу:

<?php
/**
 * Вставляет рекламный блок в первом переносе строки или перед первым закрывающим
 * тегом <code>&lt;/p&gt;</code> или <code>&lt;/table&gt;</code> после определённого числа символов.
 *
 * @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();

    return preg_replace( '~&#91;^^&#93;{' . $num . '}.*?(?:r?nr?n|</p>|</table>)~su', "${0}$adsense", trim( $text ), 1 );
}

#### Как использовать код

Замените строку "код рекламы здесь" на ваш реальный рекламный код.

Данный код вставляет рекламный блок в первом найденном переносе строки или закрывающем теге </p> или </table> после указанного количества символов (в данном случае — 400).

### Вставка рекламы перед тегом MORE

Если вам нужно вставить рекламный блок перед тегом <!--more-->, раскомментируйте предпоследнюю строку в коде:

```php
# return str_replace('', $adsense.'', $text);

Реклама только для старых постов

Если вы хотите показывать рекламу только для постов, которым, например, 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 = '
    
код рекламы здесь
'; return preg_replace('@([^^]{'.$nu.'}.*?)(r?nr?n|

)@', "1$adsense2", trim($text), 1);

}

Заключение

Такой способ вставки рекламы будет удобен, если вы не хотите отвлекать своих постоянных читателей рекламой в новых статьях. В конце концов, именно они первыми приходят, чтобы прочитать ваше следующее произведение!

Leave a Reply

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