При проверке моих сообщений WordPress с помощью Инструмента Google Structured Data Testing Tool появляется следующее сообщение об ошибке:
"Image: missing and required"
У меня установлен официальный плагин WordPress AMP, который создал для меня страницы AMP. Проблема в том, что он не популярен для атрибута «image» для 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? Я хочу, чтобы страница передавала инструмент Structured Data Testing Tool, поэтому он также может пройти проверку AMP.
Обновление : причина, по которой изображение не отображается, заключается в том, что в сообщении нет встроенного изображения. Есть ли способ поместить изображение по умолчанию в случае, если его нет, поэтому он будет проходить проверку AMP / Schema.
Для соответствия HTML-спецификации AMP вам не нужно использовать структурированные данные Schema.org.
Если Google SDTT говорит, что свойство «отсутствует и требуется», это не означает, что это требуется AMP или Schema.org. Это означает, что Google не будет показывать одну из своих функций результатов поиска Google (например, Rich Snippets) для вашей страницы.
Например, есть Top Stories с функцией AMP : карусель, который ссылается на страницы AMP, показывая изображение с каждой страницы. Вот почему Google требует свойство image
Schema.org для этой функции (для статей). Но прекрасно, что вы не можете предоставить изображение для своей статьи, единственное, что происходит, – это то, что ваша страница не может появиться в каруселях Top Stories.
Конечно, вы могли бы заполнить $post_image_meta
с изображением по умолчанию (например, заполнителем), если is_array( $post_image_src )
является ложным, но это, скорее всего, не очень хорошая идея: изображение не было бы релевантным, поэтому пользователи, ищущие в Google Поиске, 't найти это полезно, поэтому Google Search будет интересоваться не показывать результат своим пользователям. (Но если и каким образом это на самом деле, это проблема с SEO, которая принадлежит веб-мастерам SE ).
Изображение по умолчанию для старых сообщений без изображений
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 пикселей в ширину .