Как кодом задать значение для meta tag og:image?
задача динамически менять картинку для соцсетей для определенной страницы. пока нужно сделать только запись картинки в тег meta. стоит плагин seo Yaost, и как бы код
WPSEO_Meta::set_value( 'opengraph-image', 'путь к картинке', $post_id ); |
WPSEO_Meta::set_value( 'opengraph-image', 'путь к картинке', $post_id );
записывает значение, притом код
WPSEO_Meta::get_value( 'opengraph-image', $post_id); |
WPSEO_Meta::get_value( 'opengraph-image', $post_id);
это новое значение считывает, и в админке страницы появляется новая картинка, но вот на саму страницу уже при выводе новое значение не выводится. кеширования никакого на сайте нет.
как правильно сделать запись?
Дополнительно:
новая не выводится в <meta property="og:image" content="">
?
WPSEO_Meta::set_value( 'opengraph-image-id', (string) $attachment_id, $post_id ); |
WPSEO_Meta::set_value( 'opengraph-image-id', (string) $attachment_id, $post_id );
и тогда все работает
Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.
Пока нет других ответов. Будьте первым, кто поможет автору.
Ответить на вопрос
Если на сайте стоит Yoast SEO, задавать
og:imageлучше не прямой записью meta черезWPSEO_Meta::set_value(), а через фильтры Yoast. Тогда картинка будет подставляться при выводе страницы и не нужно вручную сохранять мета-поле для каждой записи.Фильтр для Open Graph image:
add_filter('wpseo_opengraph_image', function ($image) { if (is_singular('post')) { $custom = get_post_meta(get_the_ID(), '_custom_og_image', true); if ($custom) { return esc_url($custom); } } return $image; });
Если нужно задать картинку только для конкретной страницы:
add_filter('wpseo_opengraph_image', function ($image) { if (is_page(123)) { return 'https://site.ru/wp-content/uploads/og/page-123.jpg'; } return $image; });
Также можно управлять Twitter image:
add_filter('wpseo_twitter_image', function ($image) { if (is_page(123)) { return 'https://site.ru/wp-content/uploads/og/page-123.jpg'; } return $image; });
Если вы всё-таки записываете значение в Yoast meta, проверьте точное имя поля и очистите indexables Yoast, иначе фронт может брать старые данные из таблиц Yoast. Поэтому фильтр часто надёжнее для динамических случаев.
Важно: картинка должна быть доступна по абсолютному URL, без авторизации, с нормальным размером. Для соцсетей обычно используют 1200x630. После изменения проверяйте через Facebook Sharing Debugger, VK/Telegram preview и очистку кэша сайта.
Итог: для динамического
og:imageиспользуйтеwpseo_opengraph_image. Это чище, чем пытаться вручную записывать внутренние meta Yoast.