Изображение отсутствует и требуется — структура WordPress AMP не добавляет атрибут изображения

При проверке моих сообщений в WordPress с помощью инструмента тестирования структурированных данных Google я получаю следующую ошибку:

"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? Я хочу, чтобы страница прошла инструмент тестирования структурированных данных, чтобы он также мог пройти проверку AMP.

ОбновитьПричина, по которой изображение не отображается, заключается в том, что в сообщении отсутствует встроенное изображение. Есть ли способ поставить изображение по умолчанию, если его нет, поэтому он пройдет проверку AMP / Schema.

3

Решение

Для соответствия Спецификация AMP HTML, Вам не нужно использовать структурированные данные Schema.org.

Если Google SDTT сообщает, что свойство «отсутствует и требуется», это не означает, что оно требуется AMP или Schema.org. Это только значит что Google не будет показывать одну из своих функций результатов поиска Google (например, Rich Snippets) для вашей страницы.

Например, есть Главные истории с AMP особенность: карусель, которая ссылается на страницы AMP, показывая изображение с каждой страницы. Вот почему Google требует Schema.org image свойство для этой функции (для статей). Но совершенно нормально не предоставлять изображение для вашей статьи, единственное, что «происходит», — это то, что ваша страница не может появиться в этой карусели Top Stories.

Вы могли бы, конечно, заселить $post_image_meta с изображением по умолчанию (например, заполнителем), если is_array( $post_image_src ) неверно, но это, скорее всего, не очень хорошая идея: изображение не будет релевантным, поэтому пользователи, выполняющие поиск в Поиске Google, не найдут его полезным, поэтому Поиску Google будет интересно не показывать ваш результат своим пользователям. (Но если и каким образом это действительно так, то это проблема SEO, которая принадлежит Веб-мастеров SE.)

2

Другие решения

Изображение по умолчанию для старых сообщений без изображений

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 пикселей в ширину.

1

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector