图像缺失和必需 - Wordpress AMP Structure不添加图像属性

时间:2016-02-29 21:49:21

标签: php wordpress wordpress-plugin schema.org amp-html

使用Google的结构化数据测试工具验证我的wordpress帖子时,出现以下错误:

"Image: missing and required"

我安装了官方wordpress AMP插件,为我生成AMP页面。问题是它不受BlogPosting的“图像”属性的欢迎。

在插件中有一个我认为应该生成它的代码,但是它没有在任何地方运行:

private function get_post_image_metadata() {
    $post_image_meta = null;
    $post_image_id = false;

    if ( has_post_thumbnail( $this->ID ) ) {
        $post_image_id = get_post_thumbnail_id( $this->ID );
    } else {
        $attached_image_ids = get_posts( array(
            'post_parent' => $this->ID,
            'post_type' => 'attachment',
            'post_mime_type' => 'image',
            'posts_per_page' => 1,
            'orderby' => 'menu_order',
            'order' => 'ASC',
            'fields' => 'ids',
            'suppress_filters' => false,
        ) );

        if ( ! empty( $attached_image_ids ) ) {
            $post_image_id = array_shift( $attached_image_ids );
        }
    }

    if ( ! $post_image_id ) {
        return false;
    }

    $post_image_src = wp_get_attachment_image_src( $post_image_id, 'full' );

    if ( is_array( $post_image_src ) ) {
        $post_image_meta = array(
            '@type' => 'ImageObject',
            'url' => $post_image_src[0],
            'width' => $post_image_src[1],
            'height' => $post_image_src[2],
        );
    }

    return $post_image_meta;
}

如何使用此AMP WordPress插件为每个帖子填充图片代码?我希望页面能够通过结构化数据测试工具,因此他也可以通过AMP验证。

更新:图片未显示的原因是因为帖子中没有嵌入的图片。有没有办法在没有图像的情况下放置默认图像,因此它将通过AMP / Schema验证。

2 个答案:

答案 0 :(得分:2)

为了符合AMP HTML Specification,您不必使用Schema.org结构化数据。

如果Google SDTT表示某个地产缺少并且需要",则并不意味着AMP或Schema.org要求它。 only means Google不会为您的网页展示其Google搜索结果功能(例如Rich Snippets)。

例如,有Top Stories with AMP功能:链接到AMP页面的轮播,显示每个页面的图像。这就是Google requires此功能的Schema.org image属性(文章)的原因。但是不要为你的文章提供一个图像,这是唯一可以发生的事情#34;是你的页面没有机会出现在Top Stories轮播中。

如果$post_image_meta为false,您当然可以使用默认图片(例如占位符)填充is_array( $post_image_src ),但这很可能不是一个好主意:图片不相关,所以在Google搜索上搜索的用户发现它不会有用,因此Google搜索会有兴趣不向用户展示您的搜索结果。 (但是,如果以及以何种方式实际情况是SEO问题,属于Webmasters SE。)

答案 1 :(得分:1)

没有图片的旧帖子的默认图片

add_filter( 'amp_post_template_metadata', 'bbm_amp_modify_json_metadata', 10, 2 );
function bbm_amp_modify_json_metadata( $metadata, $post ) {
    if (!array_key_exists('image', $metadata)) {
    $metadata['image'] = array(
            '@type' => 'ImageObject',
            'url' => get_template_directory_uri() . '/images/default.png',
            'height' => 512,
            'width' => 1024,
        );
    }
    return $metadata;
}

来自amp plugin support。我检查过它的确有效。图片应至少为696 pixels wide