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