Предотвратить публикацию некатегоризированных записей

Вопрос или проблема

Я хотел бы предотвратить публикацию постов в категории по умолчанию с названием “affitti”. Я попробовал это, но без эффекта.

function prevent_default_category_publish($data, $postarr) {
if (in_category('affitti', $postarr['ID'])) {
    wp_die('Ошибка: Посты не могут быть опубликованы с категорией по умолчанию.');
}
return $data;
}
add_filter('wp_insert_post_data', 'prevent_default_category_publish', 10, 2);

.

Ответ или решение

Чтобы предотвратить публикацию постов, отнесённых к категории по умолчанию "affitti", необходимо убедиться, что ваш код правильно обрабатывает условие и вызовы WordPress. В приведённом вами примере есть несколько аспектов, которые требуют доработки. Ниже приводится исправленный и подробный вариант, который поможет вам достичь необходимого результата.

Шаги для предотвращения публикации постов в категории "affitti"

  1. Использование хука wp_insert_post_data: Этот хук позволяет изменить данные о посте перед вставкой в базу данных. Это именно то, что вам нужно для проверки категории.

  2. Проверка наrechte в условиях: Для корректной работы необходимо убедиться, что мы получаем правильный идентификатор поста и проверяем его категории.

  3. С помощью функции wp_die: В случае, если пост принадлежит нежелательной категории, пользователю будет отображено сообщение об ошибке.

Исправленный код

function prevent_default_category_publish($data, $postarr) {
    // Проверка, если это пост (не страница и не бесполезный тип поста)
    if ($data['post_type'] === 'post') {
        // Получаем ID поста
        $post_id = $postarr['ID'];

        // Проверяем, принадлежит ли пост к категории 'affitti'
        if (has_category('affitti', $post_id)) {
            // Отменяем публикацию и выводим сообщение об ошибке
            wp_die('Ошибка: Публикация постов в категории "affitti" запрещена.');
        }
    }
    return $data;
}
add_filter('wp_insert_post_data', 'prevent_default_category_publish', 10, 2);

Пояснения к коду

  1. Проверка типа поста: Сначала мы проверяем, является ли пост стандартным (тип "post"). Это нужно, чтобы избежать ненужных проверок для других типов постов, таких как страницы.

  2. Получение идентификатора поста: Мы получаем идентификатор поста через массив $postarr, что позволяет нам использовать его для проверки категорий.

  3. Функция has_category: Она проверяет принадлежность поста к указанной категории. Если пост принадлежит к категории "affitti", выводится сообщение, и пост не публикуется.

Оптимизация

  • SEO: Этот код не только защищает ваш сайт от нежелательных публикаций, но и улучшает пользовательский опыт. Пользователи сразу получают информацию о запрете, что уменьшает вероятность недовольства и негативных отзывов.

  • Безопасность: Убедитесь, что у вас установлены последние обновления WordPress, чтобы избежать уязвимостей и поддерживать безопасность вашего сайта.

Заключение

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

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

Капча загружается...