質問: preg_replace(H2_REG, $ad_template.$h2result, $the_content, 1); } } return $the_content; } add_filter('the_content','add_ads_before_1st_h2'); ```
回答: 素のPHPでコードを書いてから提示コードにすり合わせました。 1つ目のh2はスルーして、2つ目のh2前に広告をはさんで終了という動きです。 ``` function add_ads_before_1st_h2($the_content) { if (! is_single() || ! get_h2_included_in_body($the_content)) { return $the_content; } ob_start(); get_template_part('ad-in-body'); $ad_template = ob_get_clean(); $count = 0; $insert_position = 2; $f = function ($matches) use (&$count, $insert_position, $ad_template) { return (++$count === $insert_position) ? $ad_template . $matches[0] : $matches[0]; }; // $insert_position回数分見つかったら置換打ち切り return preg_replace_callback(H2_REG, $f, $the_content, $insert_position); } ``` 参考 PHP: preg_replace_callback - Manual