首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >根据段落数在中心添加addcode

根据段落数在中心添加addcode
EN

Stack Overflow用户
提问于 2016-05-10 20:12:41
回答 1查看 239关注 0票数 1

我有我的网站设置,以显示第7段的增加。因为并不是每个帖子都一样长,这可能会导致一些奇怪的广告投放。

相反,我想使用以下逻辑:

If number_of_paragraphs => 14,然后是paragraph_insert_id= number_of_paragraphs / 2Else nothing

代码语言:javascript
复制
//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当前工作脚本:

代码语言:javascript
复制
//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 );
}
EN

Stack Overflow用户

发布于 2016-05-11 10:01:21

我已经确定了问题所在。代码现在功能齐全。

代码语言:javascript
复制
$mid = ceil(count($paragraphs) / 2);

完整代码示例:

代码语言:javascript
复制
//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段

代码语言:javascript
复制
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个分页符!)那请让我知道。

票数 0
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37138208

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档