如何删除AMP页面中的第一个图像

时间:2018-01-03 02:25:03

标签: php wordpress amp-html

所以我有代码删除所有帖子的第一张图片(这是因为我在介绍特色图片之前在每个帖子的顶部放置了一个图像,一旦创建了特色图像,我就把代码放到位删除第一个图像,所以我不必回去手动操作)。我试图让它适用于AMP页面,但还没有弄明白。

这是普通页面的功能。

 function remove_first_image ($content) {
    if (!is_page() && !is_feed() && !is_feed() && !is_home()) {
    $content = preg_replace("/<img[^>]+\>/i", "", $content, 1);
    }   
    return $content;
    }
    add_filter('the_content', 'remove_first_image');

由于这不会删除AMP页面上的第一张图片,我尝试了类似这样的内容,其中包含一些正确的元素,但无效。

add_action( 'pre_amp_render_post', function () {
    add_filter( 'the_content', function( $content ){
         $content = preg_replace("/<img[^>]+\>/i", "", $content, 1);
         return $content;
    }, 3 );
});

有关如何使其适用于AMP内容的任何想法?

1 个答案:

答案 0 :(得分:1)

我认为您上面列出的代码示例是与Automattic https://wordpress.org/plugins/amp/的AMP插件一起使用。

你使用的是不同的AMP插件......我看到了对wp-amp-ninja的引用。您可能必须检查其代码以查找操作和过滤器。它可能不一样......然后,如果没有正确记录,你就不会在更新中改变这一点。

您可以尝试切换到Automattic。或者,如果您使用wp-amp-ninja插件的高级版本,我发现它们在升级中提供了CSS选项。

就像我提到的那样,我认为您的代码将与Automattic插件一起使用。如果您切换到它并且没有兴趣,想要尝试使用样式而不是the_content过滤器删除图像...也就是说,如果仍然出现2个图像...使用amp_post_template_css操作。使用浏览器的inspect元素查找正确的css类名。 (可能是: amp-img.wp-post-image

function wp_amp_additional_css_styles( $amp_template ) {
?>
  amp-img.wp-post-image {
        display: none;
  }

<?php
}
add_action( 'amp_post_template_css', 'wp_amp_additional_css_styles' );