Вопрос или проблема
Мой сайт использует пользовательский тип записей, созданный с помощью Jet Engine. Каждый раз, когда я создаю новую запись, мне необходимо вводить одно и то же название и выбирать одно и то же изображение в нескольких местах: изображение новости (Jet Engine), заголовок новости (Jet Engine), заголовок в соцсетях (Yoast SEO), изображение в соцсетях (Yoast SEO), заголовок X (Yoast SEO) и изображение X (Yoast SEO). Кроме того, мне нужно заполнить мета-описание и затем вставить его дважды в соответствующие вкладки социальных сетей — Социальные и X.
Как я могу автоматизировать этот процесс, особенно в 2024 году, и потребует ли это много кода? Эта задача отнимает ненужное время и увеличивает вероятность ошибок. В идеале мы должны иметь возможность извлекать эту информацию из записи без необходимости повторять эти дополнительные шаги.
Заранее спасибо!
Ответ или решение
Чтобы автоматизировать процесс извлечения заголовка и изображения из вашего кастомного типа постов (созданного с помощью Jet Engine) и их дальнейшую выборку для метаданных в Yoast SEO, можно воспользоваться хуками и фильтрами, предоставляемыми WordPress. Ниже представлен метод, который поможет автоматизировать эти задачи и снизить вероятность ошибок.
Шаги для автоматизации
-
Использование хуков WordPress: Вам нужно будет создать пользовательский функционал в файле
functions.php
вашей темы или воспользуйтесь подключаемым модулем (плагином). -
Извлечение заголовка и изображения:
- Используйте фильтр для автоматического заполнения полей метаданных на основе содержимого поста.
add_action('save_post', 'auto_fill_yoast_meta', 10, 3);
function auto_fill_yoast_meta($post_id, $post, $update) {
// Проверка на тип поста
if (get_post_type($post_id) != 'your_custom_post_type') {
return;
}
// Получение заголовка и изображения
$title = get_the_title($post_id);
$image_id = get_post_thumbnail_id($post_id);
$image_url = wp_get_attachment_url($image_id);
// Изменение метаданных Yoast SEO
if (function_exists('wpseo_set_title')) {
wpseo_set_title($title, $post_id);
}
if (function_exists('wpseo_set_link')) {
wpseo_set_link($image_url, $post_id);
}
// Дополнительно, вы можете установить мета-описание
$meta_description = 'Ваше мета-описание'; // Измените в соответствии с нуждами
update_post_meta($post_id, '_yoast_wpseo_metadesc', $meta_description);
}
- Автоматическое заполнение полей для социальных сетей:
- Этим же кодом вы можете указать значение для полей социальных сетей.
add_action('wpseo_social', 'auto_fill_social_meta', 10, 1);
function auto_fill_social_meta($post_id) {
if (get_post_type($post_id) != 'your_custom_post_type') {
return;
}
$title = get_the_title($post_id);
$image_id = get_post_thumbnail_id($post_id);
$image_url = wp_get_attachment_url($image_id);
// Установка социальных метаданных
update_post_meta($post_id, '_yoast_wpseo_opengraph-title', $title);
update_post_meta($post_id, '_yoast_wpseo_opengraph-image', $image_url);
update_post_meta($post_id, '_yoast_wpseo_twitter-title', $title);
update_post_meta($post_id, '_yoast_wpseo_twitter-image', $image_url);
}
Заключение
Данный подход значительно сократит время, затрачиваемое на обновление информации для социальных сетей и метаданных. Написанный код автоматически извлекает заголовок и изображение из вашего кастомного типа постов и переносит эти данные в метаданны Yoast SEO. Не забудьте протестировать код в безопасной среде перед внедрением на рабочий сайт.
Если у вас возникнут дополнительные вопросы или потребуется помощь с настройкой, не стесняйтесь обращаться за поддержкой.