3

使用 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 验证。

4

2 回答 2

2

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

如果 Google SDTT 说某个属性“缺失且需要”,这并不意味着 AMP 或 Schema.org 需要它。这仅意味着Google 不会为您的页面显示其 Google 搜索结果功能之一(例如 Rich Snippets)。

例如,有AMP 的热门故事功能:链接到 AMP 页面的轮播,显示每个页面的图像。这就是为什么 Google需要Schema.orgimage属性来实现此功能(用于文章)。但是,不为您的文章提供图片完全没问题,唯一“发生”的是您的页面没有机会出现在热门故事轮播中。

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

于 2016-02-29T23:19:19.000 回答
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 插件支持。我已经检查过了,它可以工作。图像应至少为696 像素宽

于 2016-03-22T16:41:26.537 回答