Вопрос или проблема
Я установил плагин под названием “Симбиоз”, который автоматически создает категории, копируя имя пользователя при его регистрации.
Когда любой пользователь создает пост на сайте, я пытаюсь понять, как назначить категорию, которая уже была создана, новому посту.
Я хочу установить категорию по умолчанию в WP на имя автора, чтобы, когда кто-то создает пост, он автоматически публиковался под его именем. (Мои пользователи не имеют доступа к стандартным панелям WP)
Я знаю о выпадающем списке в настройках > панели написания, но это не то, что мне нужно, так как я не могу настроить слаг на имя пользователя.
Это возможно через плагин или программно где-то еще?
Все категории уже созданы. Я могу получить имя пользователя вошедшего в систему и отобразить его, но не уверен, куда его вставить:
<?php global $current_user; if ( isset($current_user) ) {echo $current_user->user_login;}?>
Категория по умолчанию хранится в таблице опций под именем параметра default_category
, поэтому вы можете сделать что-то вроде этого:
add_action('admin_init','set_user_default_cat_wpa89057');
function set_user_default_cat_wpa89057(){
global $current_user;
if ( isset($current_user) ) {
update_option( 'default_category', $current_user->user_login);
}
}
function setcategory_2_username($id){
global $current_user;
$category_id = get_cat_ID( $current_user->user_login );
wp_set_post_categories( $post_id, array($category_id) );
}
add_action('save_post', 'setcategory_2_username');
Ответ или решение
Для решения задачи автоматического назначения категории постов в WordPress в соответствии с именем пользователя, вам необходимо внести изменения в код темы или плагина WordPress. Вот пошаговое руководство и примеры кода, которые помогут вам достичь этой цели.
Шаг 1: Установка Плагина
Убедитесь, что плагин "Symbiosis", который создает категории на основе имени пользователя, установлен и активирован. Все категории пользователей должны быть созданы автоматически при регистрации.
Шаг 2: Написание Функции
Вам необходимо создать функцию, которая будет назначать категорию (имя пользователя) каждому новому посту при его сохранении. Ваша цель — получить ID категории, соответствующей имени пользователя, и установить ее для нового поста.
Пример Кода
Поместите следующий код в файл functions.php
вашей темы или в другом месте, где у вас есть возможность добавлять пользовательский код:
function set_category_to_username($post_id) {
// Запрещаем автосохранение
if (defined('DOING_AUTOSAVE') && DOING_AUTOSAVE) return;
// Глобальная переменная пользователя
global $current_user;
// Проверяем, установлен ли текущий пользователь
if (isset($current_user)) {
// Получаем ID категории на основе имени пользователя
$category_id = get_cat_ID($current_user->user_login);
// Убедимся, что категории с таким ID существуют
if ($category_id) {
// Устанавливаем категорию для поста
wp_set_post_categories($post_id, array($category_id));
}
}
}
// Привязываем функцию к событию сохранения поста
add_action('save_post', 'set_category_to_username');
Шаг 3: Проверка Кода
После добавления кода, создайте новый пост от имени пользователя и убедитесь, что пост автоматически назначается в соответствующую категорию. Проверьте, что у вас создана категория с таким же именем, как у пользователя, включая заглавные буквы и пробелы, если таковые имеются.
Важные Замечания
- Безопасность: Убедитесь, что код безопасен и не допускает уязвимостей. Например, вы можете добавить дополнительные проверки, если это необходимо.
- Совместимость: Параметры и функции могут изменяться в зависимости от используемой версии WordPress. Убедитесь, что вы тестируете код на актуальной версии.
- Бэкап: Всегда делайте резервные копии перед внесением изменений в файлы кода.
Заключение
Таким образом, вы сможете настроить автоматическую категорию для каждого нового поста на основе имени пользователя без необходимости доступа к панелям управления. Этот подход позволяет значительно упростить управление постами для ваших пользователей, улучшая при этом их опыт работы с вашим сайтом.