我有我的网站设置,以显示第7段的增加。因为并不是每个帖子都一样长,这可能会导致一些奇怪的广告投放。
相反,我想使用以下逻辑:
If number_of_paragraphs => 14,然后是paragraph_insert_id= number_of_paragraphs / 2。Else nothing。
//adding mid post add based on paragraph
add_filter( 'the_content', 'prefix_insert_post_ads_mid' );
function prefix_insert_post_ads_mid( $content ) {
$ad_code = '<div id="adsensemid">code goes here</div>';
if ( is_single() && ! is_admin() ) {
return prefix_insert_after_paragraph( $ad_code, $content );
}
return $content;
}
function prefix_insert_after_paragraph( $insertion, $content ) {
$closing_p = '</p>';
$paragraphs = explode( $closing_p, $content );
// floor or ceil; to make it round
$mid = ceil(length($paragraphs) / 2);
foreach ($paragraphs as $index => $paragraph) {
if ( trim( $paragraph ) ) {
$paragraphs[$index] .= $closing_p;
}
if ( $mid == $index + 1 ) {
$paragraphs[$index] .= $insertion;
}
}
return implode( '', $paragraphs );
}不幸的是,我的第一次修改已经破坏了脚本。当应用于网站时,所有内容均为空。有没有人能找到这个缺陷?任何帮助都将不胜感激!
ps当前工作脚本:
//adding mid post add based on paragraph
add_filter( 'the_content', 'prefix_insert_post_ads_mid' );
function prefix_insert_post_ads_mid( $content ) {
$ad_code = '<div id="adsensemid></div>';
if ( is_single() && ! is_admin() ) {
return prefix_insert_after_paragraph( $ad_code, 7, $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 );
}发布于 2016-05-11 10:01:21
我已经确定了问题所在。代码现在功能齐全。
$mid = ceil(count($paragraphs) / 2);完整代码示例:
//adding mid post add based on paragraph
add_filter( 'the_content', 'prefix_insert_post_ads_mid' );
function prefix_insert_post_ads_mid( $content ) {
$ad_code = '<div id="adsensemid">code goes here</div>';
if ( is_single() && ! is_admin() ) {
return prefix_insert_after_paragraph( $ad_code, $content );
}
return $content;
}
function prefix_insert_after_paragraph( $insertion, $content ) {
$closing_p = '</p>';
$paragraphs = explode( $closing_p, $content );
// floor or ceil; to make it round
$mid = ceil(count($paragraphs) / 2);
foreach ($paragraphs as $index => $paragraph) {
if ( trim( $paragraph ) ) {
$paragraphs[$index] .= $closing_p;
}
if ( $mid == $index + 1 ) {
$paragraphs[$index] .= $insertion;
}
}
return implode( '', $paragraphs );
}我确实在它的设计中遇到了一个缺陷。如果你使用分页符(nextpage标签),那么这个脚本仍然会计算整个内容。假设你有一篇文章,有两页,每页有4段。脚本将数到8,并将自己抛到第四段之后。因为文章被拆分了,所以它不会居中,而是两页每页的最后一段。
所以现在我已经将原始代码修改为以下条件:段落<= 8不显示任何内容段落<14找到正确的中间部分(如上面的代码)否则使用第7段
function prefix_insert_after_paragraph( $insertion, $paragraph_id, $content ) {
$closing_p = '</p>';
$paragraphs = explode( $closing_p, $content );
$number_of_paragraphs = ceil(count($paragraphs));
if ($number_of_paragraphs <= 8 ) {
//too small to display middle add
$insertion = '';
} elseif ( $number_of_paragraphs <= 14 ){
//too short for 7th paragraph, find true center
$mid = ceil(count($paragraphs) / 2);
$paragraph_id = $mid ;
}
foreach ($paragraphs as $index => $paragraph) {
if ( trim( $paragraph ) ) {
$paragraphs[$index] .= $closing_p;
}
if ( $paragraph_id == $index + 1 ) {
$paragraphs[$index] .= $insertion;
}
}
return implode( '', $paragraphs );
}如果有人有一个解决方案来找到在多个页面之间拆分的帖子的真正中心(我有多达8个分页符!)那请让我知道。
https://stackoverflow.com/questions/37138208
复制相似问题