Чтобы улучшить 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 сайта.