如何在AMP上的帖子之间隐藏广告?

时间:2019-02-07 作者:droidtaber

我使用以下代码在第4段之后的帖子上显示广告:-

add_filter( \'the_content\', \'prefix_insert_post_ads\' );

function prefix_insert_post_ads( $content ) {
    $ad_code = My Ad code;
    if ( is_single() && ! is_admin() ) {
        return prefix_insert_after_paragraph( $ad_code, 4, $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 );
}

问题是广告也出现在AMP页面上。不仅是广告,无论我放什么$ad_code 开始出现在AMP页面中。我只想在the_content 对于非AMP页面。

对于AMP页面,我想在第4段之后显示新闻稿表单。我怎样才能做到这一点?我知道我可以添加display:none 到AMP页上的div。但是,还有别的办法吗?

而且,我正在使用Wordpress的AMP插件。

1 个回复
最合适的回答,由SO网友:phatskat 整理而成

您应该能够在过滤器功能中执行以下操作:

function prefix_insert_post_ads( $content ) {
    if ( is_admin() ) {
        return $content;
    }

    if ( ! is_single() ) {
        return $content;
    }

    if ( ! is_amp_endpoint() ) {
        $ad_code = My Ad code;
        return prefix_insert_after_paragraph( $ad_code, 4, $content );
    }

    // We must be on amp:
    return amp_insert_after_paragraph( ... );
}
然后定义amp_isnert_after_paragraph 功能可在需要的位置插入新闻稿。

相关推荐

使用Apply_Filters()的要点

当我试图开发一个插件时,我试图看到其他插件也能完成我的插件将要实现的功能,然后我看到开发人员在大多数功能中使用该功能apply_filters() 我不明白为什么。下面是一个示例:public static function myFunction() { return apply_filters( \'du/class/method\' array( \'index\' => \'value\', \'index\' =&g