Стандартное изображение для главной страницы при публикации в социальных сетях
В настоящее время на моей главной странице отображается несколько последних постов. Поэтому, когда главная страница публикуется в социальных сетях (например, Facebook), миниатюра, которая отображается, берется из верхнего изображения последнего поста.
Я пытаюсь настроить так, чтобы при публикации главной страницы отображалось определенное изображение по умолчанию. Однако это изображение должно отображаться только при публикации главной страницы в социальных сетях и не должно появляться на самом сайте. Какой наилучший способ это реализовать?

Несколько вариантов:
Готовый плагин
Если вы используете Yoast WordPress SEO, у вас есть встроенная настройка для изображений Facebook. В меню SEO > Social перейдите на вкладку Facebook и выберите изображение в разделе "Настройки главной страницы". Вы также можете установить изображение по умолчанию для записей без миниатюры в разделе "Стандартные настройки".
Другие SEO-плагины могут иметь аналогичные возможности.
Дочерняя тема
Вы можете создать дочернюю тему или модифицировать кастомную тему. Сначала убедитесь, что тема поддерживает логотип сайта. Если нет, добавьте поддержку кастомного логотипа.
Затем отредактируйте или скопируйте header.php
в вашу новую дочернюю тему. Внутри тегов <head></head>
добавьте проверку if(is_front_page())
или if(is_home())
в зависимости от ваших потребностей. В вашем случае подойдет любой из вариантов.
Если условие выполняется, получите URL кастомного логотипа:
$image = wp_get_attachment_image_url(get_theme_mod('custom_logo'), 'large');
и выведите его в Open Graph тегах:
<meta property="og:image" content="<?php echo $image; ?>" />
<meta name="twitter:image" content="<?php echo $image; ?>" />
Кастомный плагин
Вы также можете создать собственный плагин, если не хотите использовать Yoast WordPress SEO или изменять тему. Риск в том, что существующая тема или плагин уже могут выводить изображение записи, поэтому вам нужно проверить исходный код страницы и убедиться, что ничего другое не устанавливает изображение. Я предполагаю, что это так, поскольку ваша текущая тема и плагины устанавливают изображение последней опубликованной записи при попытке поделиться.
По сути, вам нужно добавить действие для хука wp_head
. Ваше действие будет выводить данные Open Graph и Twitter image так же, как в первом варианте при работе с темой.
Вам нужно решить, жестко прописать изображение в плагине или создать страницу настроек в wp-admin, где вы сможете изменять изображение при необходимости.

Разные социальные платформы используют различные методы.
Для Facebook необходим набор тегов <meta>
с свойствами og
- например, og:url
, og:type
, og:description
и og:image
. og:image
должен содержать полный путь к изображению, которое вы хотите отображать.
Twitter использует похожий механизм, но со своими собственными 'карточками', для которых требуется свой набор тегов meta
- например, name="twitter:card"
и name="twitter:image"
.
Думаю, существуют плагины для обработки этого. У меня есть собственная простая функция, которая использует миниатюру страницы или резервное изображение, если миниатюра не задана.

Мета-теги OG — это, скорее всего, то, что вам нужно. В данном случае:
<meta property="og:image" content="path/to/foo.jpg" />
Поместите этот код внутри условия is_home()
, и, надеюсь, всё заработает.
