我能想到的最简单的方法是浏览段落,在段落中添加广告文本:
function insert_ad_block( $text ) {
if ( is_single() ) :
$ads_text = \'<div class="center">\' . get_field(\'blog_post_ad\', \'option\') . \'</div>\';
$split_by = "\\n";
$insert_after = 3; //number of paragraphs
// make array of paragraphs
$paragraphs = explode( $split_by, $text);
if ( count( $paragraphs ) > $insert_after ) {
$new_text = \'\'; // new text
$i = 1; // current ad index
// loop through array and build string for output
foreach( $paragraphs as $paragraph ) {
// add paragraph, preceeded by an ad after every $insert_after
$new_text .= ( $i % $insert_after == 0 ? $ads_text : \'\' ) . $paragraph;
// increase index
$i++;
}
return $new_text;
}
// otherwise just add the ad to the end of the text
return $text . $ads_text;
endif;
return $text;
}
add_filter(\'the_content\', \'insert_ad_block\');
此脚本跟踪查看的段落
$i
并在每个
$insert_after
. 索引从1开始计数(不是0),以避免打开带有广告的帖子。此脚本可能需要一些微调。
作为旁注,在确定段落时使用换行符可能有点棘手,因为它可以在列表的中间引入广告,或者在用户试图分隔项目时将多个广告放在彼此的顶部。对于易读性,也许它值得寻找</p>
并且很晚才运行过滤器(之后wpautop
). 这实际上是一个平衡您的业务目标与用户体验的问题。
希望这就是你想要的:)