Вопрос или проблема
Я пытаюсь создать новое og:image для аватара автора, когда пользователи делятся страницей профиля автора на Facebook.
Я новичок в WordPress, после поиска более 6 месяцев, но постоянно терплю неудачу.
Мой сайт – мультиавторский, и все, что мне нужно, это добавить og:image мета-тег для author.php “профиль автора”. Я застрял и очень устал от поиска.
Когда наши пользователи пытаются поделиться его профилем, изображение аватара не отображается! потому что Facebook не может найти og:image аватара автора!
Плагины, которые я использую: Yoast SEO, Simple Local Avatars, AddToAny Share Buttons.
Я пытался использовать wpseo_opengraph_image фильтр, но он не работает.
Вот код, который я использую:
function custom_author_og_image() {
if ( is_author ( ) ) {
$author = get_queried_object();
$image_attributes = get_avatar_url( $author->user_email, 'full' );
if ( $image_attributes !== false ) {
return $image_attributes[0];
}
}
}
add_filter('wpseo_opengraph_image', 'custom_author_og_image', 10, 0);
Вы проверяли, нет ли дубликатов og:image в вашем теге <head>
?
Или вы можете попробовать увеличить приоритет фильтра. Пример ниже, использование фильтра с приоритетом = 99 (почти последний).
add_filter('wpseo_opengraph_image', 'custom_author_og_image', 99);
Наконец, я нашел ответ и хотел бы поделиться им с вами, но у меня есть еще одна небольшая проблема. Теперь я могу получить аватар автора, если у него есть хотя бы 1 пост! а авторы с 0 постов Facebook не могут забрать его изображение аватара!! Странная вещь, и я не знаю, как это исправить.
в любом случае, вот код, который я нашел.
add_action('wpseo_head', 'add_fb_og', 5);
function add_fb_og() {
if ( is_author ( ) ) {
$my_custom_avatar = get_avatar(get_the_author_meta( 'ID' ), 200 );
$document = new DOMDocument();
@$document->loadHTML($my_custom_avatar);
$nodes = $document->getElementsByTagName('img');
?>
<meta property="og:image" content="<?php echo $nodes->item(0)->getAttribute('src'); ?>" />
<?php
}
}
Ответ или решение
Введение в контекст проблемы важен для понимания её сути. Когда пользователи делятся авторскими страницами на Facebook, важно обеспечить корректное отображение аватара автора в виде изображения Open Graph (og:image). В WordPress это обычно решается с помощью мета-тегов, которые включаются через плагины, такие как Yoast SEO. Однако, несмотря на использование Yoast SEO, Simple Local Avatars и AddToAny Share Buttons, возникла проблема с интеграцией аватаров через Open Graph.
Теория
Open Graph Protocol – это метод предоставления метаданных для социальных сетей, которые используют их для создания предварительного просмотра ссылки. Для Facebook, мета-тег <meta property="og:image" content="">
указывает специфическое изображение, которое будет отображаться при делении ссылки. Чтобы изображение корректно отображалось, нужно, чтобы URL был доступен и ссылающееся изображение имело достаточное разрешение и правильный формат.
Yoast SEO – это мощный инструмент для оптимизации контента в WordPress, включая автоматическую генерацию Open Graph тегов. Однако для специфических нужд, как в случае с аватаром автора, возможно потребуется ручная настройка или дополнение существующих функций плагина.
Пример
В вашем примере вы использовали фильтр wpseo_opengraph_image
, но столкнулись с проблемой отсутствия результата для авторов без постов. Возможно, проблема заключается в том, что определение аватара привязывается к условию наличия контента на странице автора. Для решения можно использовать wpseo_head
, как вы уже начали делать. Следует обратить внимание на исправление ошибок синтаксиса и структуры кода, чтобы он корректно выполнялся.
Ниже приведен пример правильной интеграции, в которой учтены некоторые ошибки:
add_action('wpseo_head', 'add_fb_og', 5);
function add_fb_og() {
if (is_author()) {
$author_id = get_queried_object_id();
$avatar_url = get_avatar_url($author_id, ['size' => 200]);
if ($avatar_url) {
echo '<meta property="og:image" content="' . esc_attr($avatar_url) . '" />';
}
}
}
Применение
-
Проверка инсталляции плагина: Убедитесь, что ваш WordPress правильно настроен и что все используемые плагины обновлены до последних версий. Это важно для исключения конфликтов и ошибок.
-
Создание дочерней темы: Изменения в коде темы лучше производить в дочерней теме, чтобы не потерять их при обновлении. Это позволит вам сохранять пользовательские правки между обновлениями основной темы.
-
Поиск дубликатов тегов: Дублирование мета-тегов og:image в
<head>
может привести к ошибкам отображения. Проверьте наличие и устраните дубликаты, используя инспектор браузера. -
Использование DOMDocument: В текущем уравнении с DOMDocument возможны ошибки из-за использования устаревшего синтаксиса или некорректной обработки объекта. Убедитесь, что все обработанные узлы корректно извлекаются, а атрибуты (
src
) соответствуют ожидаемым типам данных. -
Работа с автором без постов: Убедитесь, что ваши авторские страницы настроены для генерации Open Graph мета-тегов даже в отсутствие опубликованных статей, возможно, необходимо изменить условия logic в функции, обеспечив работу в любых контекстах.
Для достижения оптимального результата тестируйте изменения в разных сценариях: для авторов с постами и без, в авторах с разными видами изображений. Это поможет выяснить, в каких случаях система продолжает давать сбои и требует дополнительного вмешательства.
Заключение: Понимание теории и правильное применение на практике способно существенно улучшить интеграцию Open Graph для генерации мета-тегов, таких как og:image, на страницах авторов WordPress. Не забывайте регистрировать свои изменения и делиться опытом, чтобы улучшить пользовательское взаимодействие в многопользовательских средах, что поможет другим в решении подобных проблем.