Оглавление

Чтобы улучшить SEO вашего сайта на WordPress, важно следить за уникальностью заголовков и мета-описаний. Это особенно актуально для страниц и записей, так как дублирующийся контент может негативно повлиять на ранжирование сайта в поисковых системах. С помощью плагина SEO Framework можно легко отслеживать уникальность мета-данных и избежать проблем с дубликатами заголовков и описаний.

В этой статье я рассмотрю скрипт, который автоматически проверяет заголовки и описания на наличие дубликатов, выводя предупреждения в админке при редактировании записей и страниц.

Основные шаги работы скрипта:

  1. Проверка типа поста
    Этот код проверяет, что скрипт выполняется только для записей и страниц. Если текущий тип поста отличается (например, продукт или медиафайл), выполнение скрипта прекращается.
   if ($post->post_type !== 'post' && $post->post_type !== 'page') {
       return;
   }
  1. Получение заголовка и мета-описания
    Здесь мы получаем заголовок поста с помощью функции get_the_title, а мета-описание — из мета-данных, созданных плагином SEO Framework.
   $title = get_the_title($post->ID);
   $description = get_post_meta($post->ID, '_genesis_description', true); // SEO Framework
  1. Проверка на дублирование заголовков
    Мы выполняем 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));
  1. Вывод предупреждения при дублировании заголовков
    Если найдено больше одного поста с таким же заголовком, выводим предупреждение в админке.
   if ($duplicates[0]->count > 1) {
       echo '<div class="notice notice-warning"><p>Внимание: заголовок "' . esc_html($title) . '" дублируется на других страницах.</p></div>';
   }
  1. Проверка дублирования мета-описаний
    Мы проверяем мета-описания на дублирование с помощью запроса к таблице мета-данных.
   $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));
  1. Вывод предупреждения при дублировании мета-описаний
    Если найдено дублирование мета-описания, выводим предупреждение.
   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 сайта.