Додавання мета-опису та ключових слів у 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

Залишити відповідь

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *