function ads_h2( $content ) {
// Хорошая практика, называется "return early"
if ( ! is_single() ) {
return $content;
}
// Заготовили код рекламы
$ad = '[AD]';
// Инициализировали счетчик
$count = 1; // 0 или 1, по ситуации
// Делаем замену через коллбек
$content = preg_replace_callback(
'#<h2(.*?)</h2>#',
// С помощью use передаем в замыкание дополнительные параметры
function( $matches ) use ( &$count, $ad ) {
// Увеличиваем счетчик
$count++;
// Если число четное, добавляем рекламу
if ( $count % 2 == 0 ) {
return '<div class="ads_content">' . $matches[0] . $ad . '</div>';
// Если нечетное - ничего не делаем
} else {
return $matches[0];
}
},
$content
);
// Вернули измененный контент
return $content;
}
add_filter( 'the_content', 'ads_h2' );
Бонус
Если менять цифру в
if ( $count % 2 == 0 ) {
вместо 2 на, скажем, 3 или 4, то реклама будет выводиться, соответственно, в каждом 3м или 4м подзаголовке.