Чтобы улучшить SEO вашего сайта на WordPress, важно следить за уникальностью заголовков и мета-описаний. Это особенно актуально для страниц и записей, так как дублирующийся контент может негативно повлиять на ранжирование сайта в поисковых системах. С помощью плагина SEO Framework можно легко отслеживать уникальность мета-данных и избежать проблем с дубликатами заголовков и описаний.
В этой статье я рассмотрю скрипт, который автоматически проверяет заголовки и описания на наличие дубликатов, выводя предупреждения в админке при редактировании записей и страниц.
Основные шаги работы скрипта:
- Проверка типа поста
Этот код проверяет, что скрипт выполняется только для записей и страниц. Если текущий тип поста отличается (например, продукт или медиафайл), выполнение скрипта прекращается.
if ($post->post_type !== 'post' && $post->post_type !== 'page') {
return;
}
- Получение заголовка и мета-описания
Здесь мы получаем заголовок поста с помощью функцииget_the_title, а мета-описание — из мета-данных, созданных плагином SEO Framework.
$title = get_the_title($post->ID); $description = get_post_meta($post->ID, '_genesis_description', true); // SEO Framework
- Проверка на дублирование заголовков
Мы выполняем SQL-запрос к базе данных WordPress, чтобы проверить, есть ли другие записи с таким же заголовком. Текущий пост исключаем из поиска по его ID.
$duplicates = $wpdb->get_results($wpdb->prepare("
SELECT COUNT(*) as count
FROM $wpdb->posts
WHERE post_type = %s
AND (post_title = %s OR ID != %d)
AND post_status = 'publish'
", $post->post_type, $title, $post->ID));
- Вывод предупреждения при дублировании заголовков
Если найдено больше одного поста с таким же заголовком, выводим предупреждение в админке.
if ($duplicates[0]->count > 1) {
echo '<div class="notice notice-warning"><p>Внимание: заголовок "' . esc_html($title) . '" дублируется на других страницах.</p></div>';
}
- Проверка дублирования мета-описаний
Мы проверяем мета-описания на дублирование с помощью запроса к таблице мета-данных.
$description_duplicates = $wpdb->get_results($wpdb->prepare("
SELECT COUNT(*) as count
FROM $wpdb->postmeta
WHERE meta_key = '_genesis_description'
AND meta_value = %s
AND post_id != %d
", $description, $post->ID));
- Вывод предупреждения при дублировании мета-описаний
Если найдено дублирование мета-описания, выводим предупреждение.
if ($description_duplicates[0]->count > 0) {
echo '<div class="notice notice-warning"><p>Внимание: описание уже используется на других страницах.</p></div>';
}
Полный код функции
function check_duplicate_titles_and_descriptions() {
global $post;
// Проверяем тип поста (записи и страницы)
if ($post->post_type !== 'post' && $post->post_type !== 'page') {
return;
}
// Получаем заголовок и мета-описание
$title = get_the_title($post->ID);
$description = get_post_meta($post->ID, '_genesis_description', true); // SEO Framework
// Проверка дубликатов заголовков
global $wpdb;
$duplicates = $wpdb->get_results($wpdb->prepare("
SELECT COUNT(*) as count
FROM $wpdb->posts
WHERE post_type = %s
AND (post_title = %s OR ID != %d)
AND post_status = 'publish'
", $post->post_type, $title, $post->ID));
if ($duplicates[0]->count > 1) {
echo '<div class="notice notice-warning"><p>Внимание: заголовок "' . esc_html($title) . '" дублируется на других страницах.</p></div>';
}
// Проверка дубликатов мета-описаний
$description_duplicates = $wpdb->get_results($wpdb->prepare("
SELECT COUNT(*) as count
FROM $wpdb->postmeta
WHERE meta_key = '_genesis_description'
AND meta_value = %s
AND post_id != %d
", $description, $post->ID));
if ($description_duplicates[0]->count > 0) {
echo '<div class="notice notice-warning"><p>Внимание: описание уже используется на других страницах.</p></div>';
}
}
add_action('admin_notices', 'check_duplicate_titles_and_descriptions');
Заключение
Используя этот код с плагином SEO Framework, ты можешь автоматически проверять уникальность заголовков и мета-описаний на своём сайте WordPress. Это позволит тебе избежать дублирующегося контента и улучшить SEO сайта.
