Размещение рекламы в самом эффективном месте поста или страницы является нетривиальной задачей. Как показывает практика, самая эффективная реклама, которую замечают, по которой кликают — реклама, размещенная внутри контента. Расположить ее внутри поста можно, воспользовавшись шорткодом, однако этот ручной метод требует постоянного контроля — нужно, как минимум, вставить шорткод в содержимое поста или страницы. Для того, чтобы автоматизировать эту операцию, можно воспользоваться фильтром, который будет вставлять рекламу в пост после определенного абзаца.
Для того, чтобы вывести рекламу после определенного абзаца, вставьте в файл functions.php используемой вами темы следующий код:
// Вывод рекламны в посте после определенного абзаца
add_filter( 'the_content', 'tp_ad_to_post_content' );
function tp_ad_to_post_content( $content ) {
if( !is_single() )
return $content;
$paragraphAfter = 4;
$content = explode ( "", $content );
$new_content = '';
for ( $i = 0; $i < count ( $content ); $i ++ ) {
if ( $i == $paragraphAfter ) {
$new_content .= ' здесь ваш код рекламы ';
}
$new_content .= $content[$i] . "";
}
return $new_content;
}
$paragraphAfter = 4; — это номер абзаца, после которого выводится реклама
А что делать, если вам нужно выводить рекламу не во всех постах, исключить некоторые? Можно модифицировать этот код, добавив список ID постов, в которых реклама выводиться не будет:
// Вывод рекламы в посте после определенного абзаца, за исключением определенных постов
add_filter( 'the_content', 'tp_ad_to_post_content' );
function tp_ad_to_post_content( $content ) {
if( !is_single() )
return $content;
$paragraphAfter = 4;
$content = explode ( "", $content );
$new_content = '';
for ( $i = 0; $i < count ( $content ); $i ++ ) {
if ( $i == $paragraphAfter ) {
if ( ! is_single ( array(1026, 1027, 1029, 1040) ) ) {
$new_content .= ' здесь ваш код рекламы '; }
}
$new_content .= $content[$i] . "
";
}
return $new_content;
}
$paragraphAfter = 4; — это номер абзаца, после которого выводится реклама
1026, 1027, 1029, 1040 — это ID постов, в которых реклама выводиться не будет
Если вам нужно выводить рекламу не только в постах, но и на страницах, то вы можете использовать фильтр с подобной конструкцией:
// Вывод рекламн на странице после определенного абзаца
add_filter( 'the_content', 'tp_ad_to_page_content' );
function tp_ad_to_page_content( $content ) {
if( !is_page() )
return $content;
$paragraphAfter = 4;
$content = explode ( "", $content );
$new_content = '';
for ( $i = 0; $i < count ( $content ); $i ++ ) {
if ( $i == $paragraphAfter ) {
$new_content .= ' здесь ваш код рекламы ';
}
$new_content .= $content[$i] . "";
}
return $new_content;
}
$paragraphAfter = 4; — это номер абзаца, после которого выводится реклама
Если нужно исключить некоторые страницы, то код нужно изменить:
// Вывод рекламы в посте после определенного абзаца, за исключением определенных постов
add_filter( 'the_content', 'tp_ad_to_page_content' );
function tp_ad_to_page_content( $content ) {
if( !is_page() )
return $content;
$paragraphAfter = 4;
$content = explode ( "", $content );
$new_content = '';
for ( $i = 0; $i < count ( $content ); $i ++ ) {
if ( $i == $paragraphAfter ) {
if ( ! is_page ( array(100, 101, 103, 109) ) ) {
$new_content .= ' здесь ваш код рекламы '; }
}
$new_content .= $content[$i] . "";
}
return $new_content;
}
$paragraphAfter = 4; — это номер абзаца, после которого выводится реклама
100, 101, 103, 109 — это ID страниц, на которых реклама выводиться не будет
Не трудно догадаться, что подобный фильтр можно использовать не только для вывода рекламы Google AdSense или Яндекс.Директ, но и для произвольных баннеров, контекстной и тизерной рекламы, а так же для любого блока с дополнительной информацией, не обязательно рекламного характера, например, для вывода постов похожей тематики.









Как доработать, чтобы рекламные блоки не попадали в таблицы. Также бывают случаи, когда блок попадает между абзацем и списком (). В этом случае список некорректно отображается.