Вопрос или проблема
Я хочу ограничить авторов определенной категорией для написания. Плагин, который рекомендован на многих блогах, – это restrict-author-posting. К сожалению, он больше не поддерживается и был удален из магазина плагинов.
Единственный подходящий, но не бесплатный плагин, который я нашел, – это PublishPress Pro. Я очень не хочу платить за эту функциональность.
Дополнительным плюсом было бы то, что некоторые редакторы могут публиковать материалы только в определенной категории.
Я готов написать/отредактировать код, если это необходимо – у меня есть опыт работы с PHP и т. д., но я никогда не работал с WordPress. Я не смог найти пост, который решил бы эту проблему без упомянутого выше плагина.
Спасибо заранее
РЕДАКТИРОВАТЬ: Изначально я опубликовал этот вопрос на r/Wordpress (https://new.reddit.com/r/Wordpress/comments/eyocc3/restrict_author_to_post_only_to_a_specific/)
Плагин может больше не поддерживаться, но вы можете посмотреть код по адресу: https://plugins.trac.wordpress.org/browser/restrict-author-posting/trunk/restrict-author-posting.php
Этот код можно использовать/модифицировать в соответствии с вашими потребностями по лицензии GNU General Public License.
На WordPress 6.1 я протестировал restrict-author-posting, и он сработал.
Вы можете скачать restrict-author-posting по этой(1) или этой(2) ссылке и использовать этот плагин.
Примечание: этот плагин не работает с Gutenberg и работает нормально с классическим редактором. Чтобы отключить редактор Gutenberg, вы можете использовать этот плагин.
Ответ или решение
Для того чтобы ограничить авторов возможностью публикации только в определенной категории на вашем сайте WordPress, вы можете воспользоваться кодом, который позволит вам создать это ограничение без необходимости использования плагинов, которые не поддерживаются или требуют оплаты. Давайте рассмотрим, как это сделать, шаг за шагом.
1. Создание функции ограничения публикации в определенной категории
Создайте функцию, которая будет проверять категорию каждой публикации, добавляемой автором. Этот код можно добавить в файл functions.php
вашей темы или использовать плагин для вставки пользовательского кода, такой как Code Snippets.
function restrict_author_posts_to_category($post_id) {
// Проверяем, является ли текущий пользователь автором
if (current_user_can('author')) {
// Устанавливаем ID категории, в которую автор может публиковать
$allowed_category_id = 'ID_ВАШЕЙ_КАТЕГОРИИ'; // Замените на ваш ID категории
// Получаем категории публикации
$post_categories = wp_get_post_categories($post_id);
// Проверяем, находится ли публикация в разрешенной категории
if (!in_array($allowed_category_id, $post_categories)) {
// Если нет, отклоняем публикацию
wp_die(__('Вы можете публиковать только в определенной категории.'));
}
}
}
add_action('pre_post_update', 'restrict_author_posts_to_category');
2. Ограничение для редакторов
Если вы хотите, чтобы некоторые редакторы тоже могли публиковать только в определенной категории, вы можете расширить эту функцию, добавив проверку для ролей редакторов.
function restrict_authors_and_editors_posts_to_category($post_id) {
// Получаем текущего пользователя
$current_user = wp_get_current_user();
// Устанавливаем ID категории, в которую могут публиковать авторы и редакторы
$allowed_category_id = 'ID_ВАШЕЙ_КАТЕГОРИИ'; // Замените на ваш ID категории
// Проверяем, является ли текущий пользователь автором или редактором
if (current_user_can('author') || current_user_can('editor')) {
// Получаем категории публикации
$post_categories = wp_get_post_categories($post_id);
// Проверяем, находится ли публикация в разрешенной категории
if (!in_array($allowed_category_id, $post_categories)) {
// Если нет, отклоняем публикацию
wp_die(__('Вы можете публиковать только в определенной категории.'));
}
}
}
add_action('pre_post_update', 'restrict_authors_and_editors_posts_to_category');
3. Добавление пользовательского сообщения
Вы можете изменить сообщение об ошибке, если нужно что-то более индивидуализированное, добавив строку, находящуюся в функции wp_die()
.
4. Тестирование кода
После того как вы добавили этот код в ваш сайт, важно протестировать его, создав записи как автор и редактор. Убедитесь, что они сталкиваются с сообщением, когда пытаются опубликовать в неразрешенной категории.
Заключение
Этот подход позволяет вам управлять доступом авторов и редакторов к категориям на вашем сайте WordPress без необходимости использования дополнительных плагинов или затрат. Важно поддерживать вашу тему и код в актуальном состоянии для предотвращения возможных конфликтов в будущем. Если у вас возникают проблемы или у вас есть дополнительные вопросы, не стесняйтесь искать помощь на форумах сообщества WordPress или у профессиональных разработчиков.
Надеюсь, это поможет вам решить вашу задачу, и удачи в дальнейшем развитии вашего сайта!