我在我的wordpress网站上使用代码,该代码在第8段之后显示广告。 我怎样才能做到这一点。 uhmm。 "如果内容少于8个段落,请不要展示广告"
提前致谢。
add_filter( 'the_content', 'prefix_insert_post_ads' );
function prefix_insert_post_ads( $content ) {
$ad_code = '<div>ads code</div>';
if ( is_single() && ! is_admin() ) {
return prefix_insert_after_paragraph( $ad_code, 8, $content );
}
return $content;
}
function prefix_insert_after_paragraph( $insertion, $paragraph_id, $content ) {
$closing_p = '</p>';
$paragraphs = explode( $closing_p, $content );
foreach ($paragraphs as $index => $paragraph) {
if ( trim( $paragraph ) ) {
$paragraphs[$index] .= $closing_p;
}
if ( $paragraph_id == $index + 1 ) {
$paragraphs[$index] .= $insertion;
}
}
return implode( '', $paragraphs );
}
答案 0 :(得分:1)
如果您要做的只是确保如果内容比您的功能允许的内容短,则不要显示广告,只需将foreach块包装在一个小支票内:
function prefix_insert_after_paragraph( $insertion, $paragraph_id, $content ) {
$closing_p = '</p>';
$paragraphs = explode( $closing_p, $content );
if (count($paragraphs) >= $insertion) {
foreach ($paragraphs as $index => $paragraph) {
if ( trim( $paragraph ) ) {
$paragraphs[$index] .= $closing_p;
}
if ( $paragraph_id == $index + 1 ) {
$paragraphs[$index] .= $insertion;
}
}
return implode( '', $paragraphs );
}
return $content;
}
我不确定这是不是你打算做的,但至少这是我的解释:)
这样做基本上是检查您是否有比展示广告所需的段落更多的段落,然后运行循环。否则,它只会返回内容。返回内容的原因是prefix_insert_post_ads
具有一致的行为。