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

Php 根据段落数在中心添加addcode,php,wordpress,web,Php,Wordpress,Web,我的网站设置为在第7段显示附加内容。因为不是每个帖子都和其他帖子一样长,这会导致一些奇怪的广告放置 相反,我想使用以下逻辑: 如果段落数=>14则段落插入\u id=段落数/2其他无任何内容 //adding mid post add based on paragraph add_filter( 'the_content', 'prefix_insert_post_ads_mid' ); function prefix_insert_post_ads_mid( $content ) {

我的网站设置为在第7段显示附加内容。因为不是每个帖子都和其他帖子一样长,这会导致一些奇怪的广告放置

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

如果段落数=>14
段落插入\u id=段落数/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(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 );
}
//根据段落添加中后期添加
添加过滤器(‘内容’、‘前缀’、‘插入’、‘发布’、‘广告’、‘中间’);
函数前缀\插入\发布\广告\中间($content){
$ad_code='代码在这里';
如果(is_single()&&!is_admin()){
返回前缀\在\段后插入\段($ad\ U代码,$content);
}
返回$content;
}
函数前缀\插入\在\段后面($insert,$content){
$closing_p='

'; $段落=分解($closing\u p,$content); //地板或天花板;使其圆 $mid=ceil(长度($段落)/2); foreach($index=>$paration的段落){ 如果(删减($段)){ $段落[$index]。=$closing\u p; } 如果($mid==$index+1){ $段落[$索引]。=$插入; } } 返回内爆(“”,$段); }
不幸的是,我的第一次修改已经破坏了脚本。应用于网站时,所有内容均为空白。有没有人能找到缺陷?任何帮助都将不胜感激

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 );
}
//根据段落添加中后期添加
添加过滤器(‘内容’、‘前缀’、‘插入’、‘发布’、‘广告’、‘中间’);
函数前缀\插入\发布\广告\中间($content){

$ad_code='我已经确定了这个问题。代码现在已经完全可用了

$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 );
}
//根据段落添加中后期添加
添加过滤器(‘内容’、‘前缀’、‘插入’、‘发布’、‘广告’、‘中间’);
函数前缀\插入\发布\广告\中间($content){
$ad_code='代码在这里';
如果(is_single()&&!is_admin()){
返回前缀\在\段后插入\段($ad\ U代码,$content);
}
返回$content;
}
函数前缀\插入\在\段后面($insert,$content){
$closing_p='

'; $段落=分解($closing\u p,$content); //地板或天花板;使其圆 $mid=ceil(计数($段落)/2); foreach($index=>$paration的段落){ 如果(删减($段)){ $段落[$index]。=$closing\u p; } 如果($mid==$index+1){ $段落[$索引]。=$插入; } } 返回内爆(“”,$段); }
我确实在它的设计中遇到了一个缺陷。如果你使用分页符(下一页标签)然后这个脚本仍然会计算整个内容。假设你有一篇文章有两页,每页有4段。脚本将计算8,并在第4段后自动跳转。因为文章被拆分,所以它不会是中心,而是两页中每一页的最后一段

现在,我已经将原始代码修改为以下条件
段落我已经确定了这个问题。代码现在已经完全运行了

$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 );
}
//根据段落添加中后期添加
添加过滤器(‘内容’、‘前缀’、‘插入’、‘发布’、‘广告’、‘中间’);
函数前缀\插入\发布\广告\中间($content){
$ad_code='代码在这里';
如果(is_single()&&!is_admin()){
返回前缀\在\段后插入\段($ad\ U代码,$content);
}
返回$content;
}
函数前缀\插入\在\段后面($insert,$content){
$closing_p='

'; $段落=分解($closing\u p,$content); //地板或天花板;使其圆 $mid=ceil(计数($段落)/2); foreach($index=>$paration的段落){ 如果(删减($段)){ $段落[$index]。=$closing\u p; } 如果($mid==$index+1){ $段落[$索引]。=$插入; } } 返回内爆(“”,$段); }
我确实在它的设计中遇到了一个缺陷。如果你使用分页符(下一页标签)然后这个脚本仍然会计算整个内容。假设你有一篇文章有两页,每页有4段。脚本将计算8,并在第4段后自动跳转。因为文章被拆分,所以它不会是中心,而是两页中每一页的最后一段

现在,我已经将原始代码修改为以下条件 段落