Плагин Yoast SEO open graph добавляет метатег для извлечения аватара со страницы автора.

Вопрос или проблема

Я пытаюсь создать новое 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) . '" />';
        }
    }
}

Применение

  1. Проверка инсталляции плагина: Убедитесь, что ваш WordPress правильно настроен и что все используемые плагины обновлены до последних версий. Это важно для исключения конфликтов и ошибок.

  2. Создание дочерней темы: Изменения в коде темы лучше производить в дочерней теме, чтобы не потерять их при обновлении. Это позволит вам сохранять пользовательские правки между обновлениями основной темы.

  3. Поиск дубликатов тегов: Дублирование мета-тегов og:image в <head> может привести к ошибкам отображения. Проверьте наличие и устраните дубликаты, используя инспектор браузера.

  4. Использование DOMDocument: В текущем уравнении с DOMDocument возможны ошибки из-за использования устаревшего синтаксиса или некорректной обработки объекта. Убедитесь, что все обработанные узлы корректно извлекаются, а атрибуты (src) соответствуют ожидаемым типам данных.

  5. Работа с автором без постов: Убедитесь, что ваши авторские страницы настроены для генерации Open Graph мета-тегов даже в отсутствие опубликованных статей, возможно, необходимо изменить условия logic в функции, обеспечив работу в любых контекстах.

Для достижения оптимального результата тестируйте изменения в разных сценариях: для авторов с постами и без, в авторах с разными видами изображений. Это поможет выяснить, в каких случаях система продолжает давать сбои и требует дополнительного вмешательства.

Заключение: Понимание теории и правильное применение на практике способно существенно улучшить интеграцию Open Graph для генерации мета-тегов, таких как og:image, на страницах авторов WordPress. Не забывайте регистрировать свои изменения и делиться опытом, чтобы улучшить пользовательское взаимодействие в многопользовательских средах, что поможет другим в решении подобных проблем.

Оцените материал
Добавить комментарий

Капча загружается...