Добавление мета-описания и ключевых слов в WordPress


Краткое объяснение кода:

  1. Добавление мета-блоков в редактор: Создаются два мета-блока в админке — для ввода мета-описания и мета-ключевых слов.

  2. Сохранение данных: Когда пользователь сохраняет пост или страницу, введенные данные мета-описания и мета-ключевых слов сохраняются в базе данных.
  3. Вывод мета-тегов: На страницах и постах добавляются мета-теги description и keywords в <head>, если соответствующие данные существуют.

Каждая функция выполняет свою роль, создавая, сохраняя и выводя мета-информацию для улучшения SEO сайта.

Функция темы (functions.php)

// Функция для добавления мета-блока Description в редактор постов и страниц
function add_meta_box_description() {
    add_meta_box(
        'meta_description', // ID мета-блока
        'Meta Description', // Заголовок мета-блока
        'custom_meta_description_callback', // Callback функция, которая будет выводить форму
        ['post', 'page'], // Типы контента, к которым будет добавлен мета-блок (посты и страницы)
        'normal', // Позиция мета-блока (обычно 'normal' для стандартного положения)
        'high' // Приоритет отображения мета-блока
    );
}
add_action('add_meta_boxes', 'add_meta_box_description'); // Привязываем функцию к хук add_meta_boxes

// Функция callback для отображения мета-описания
function custom_meta_description_callback($post) {
    // Получаем сохраненное значение мета-описания из базы данных
    $description = get_post_meta($post->ID, '_meta_description', true);
    // Отображаем поле ввода для мета-описания
    echo '<textarea style="width:100%" name="meta_description">' . esc_textarea($description) . '</textarea>';
}

// Функция для сохранения мета-описания при сохранении поста или страницы
function save_meta_description($post_id) {
    // Проверяем, если значение для meta_description установлено в POST запросе
    if (isset($_POST['meta_description'])) {
        // Сохраняем мета-описание в базу данных с фильтрацией
        update_post_meta($post_id, '_meta_description', sanitize_text_field($_POST['meta_description']));
    }
}
add_action('save_post', 'save_meta_description'); // Привязываем функцию к хук save_post

// Функция для добавления мета-блока Keywords в редактор постов и страниц
function add_meta_boxes_keywords() {
    add_meta_box(
        'meta_keywords', // ID мета-блока
        'Meta Keywords', // Заголовок мета-блока
        'custom_meta_keywords_callback', // Callback функция, которая будет выводить форму
        ['post', 'page'], // Типы контента (посты и страницы)
        'normal', // Позиция мета-блока
        'high' // Приоритет отображения мета-блока
    );
}
add_action('add_meta_boxes', 'add_meta_boxes_keywords'); // Привязываем функцию к хук add_meta_boxes

// Функция callback для отображения мета-ключевых слов
function custom_meta_keywords_callback($post) {
    // Получаем сохраненные ключевые слова из базы данных
    $keywords = get_post_meta($post->ID, '_meta_keywords', true);
    // Отображаем поле ввода для мета-ключевых слов
    echo '<textarea style="width:100%" name="meta_keywords">' . esc_textarea($keywords) . '</textarea>';
}

// Функция для сохранения мета-ключевых слов при сохранении поста или страницы
function save_meta_keywords($post_id) {
    // Проверяем, если значение для meta_keywords установлено в POST запросе
    if (isset($_POST['meta_keywords'])) {
        // Сохраняем мета-ключевые слова в базу данных с фильтрацией
        update_post_meta($post_id, '_meta_keywords', sanitize_text_field($_POST['meta_keywords']));
    }
}
add_action('save_post', 'save_meta_keywords'); // Привязываем функцию к хук save_post

// Функция для добавления мета-тегов в <head> для отдельных страниц и записей
function add_meta_tags() {
    if (is_singular(['post', 'page'])) { // Проверяем, если это отдельная запись или страница
        // Получаем мета-описание и мета-ключевые слова
        $meta_description = get_post_meta(get_the_ID(), '_meta_description', true);
        $meta_keywords = get_post_meta(get_the_ID(), '_meta_keywords', true);

        // Если мета-описание не пустое, выводим тег <meta name="description">
        if (!empty($meta_description)) {
            echo '<meta name="description" content="' . esc_attr($meta_description) . '">' . "\n";
        }
        // Если мета-ключевые слова не пустые, выводим тег <meta name="keywords">
        if (!empty($meta_keywords)) {
            echo '<meta name="keywords" content="' . esc_attr($meta_keywords) . '">' . "\n";
        }
    }
}
add_action('wp_head', 'add_meta_tags'); // Привязываем функцию к хук wp_head

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *