Intereting Posts
Get_the_author не возвращает имя автора Ошибка загрузки изображения wordpress Невозможно вызвать пользовательский css в style.php Как добавить дополнительный столбец администратора, показывающий количество слов на странице или сообщении? Запустить следующий запрос на основе первого запроса Рекомендации по использованию нескольких пользовательских каналов Каков наилучший способ разделить функциональность только для администратора в файле functions.php темы? Использование и расположение изображений, новая тема WordPress Могут ли простые параметры сохранения администратора в Multisite? CSS не загружается на мобильные устройства RSS-каналы и WordPress? Разделить несколько категорий на два столбца перенаправить второй домен на статическую страницу Пользовательский тип сообщения – изменение имени в боковой панели Использование пользовательских полей в URL-адресе пользовательского типа отправки

Сохранение пользовательских параметров в WordPress admin

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

$options = get_option('username-plugin_options'); 

Есть ли лучший способ сделать это?

Когда вы регистрируете свой параметр (при условии, что используете API-интерфейсы настроек), вы можете получить текущий пользовательский объект с помощью wp_get_current_user . Он возвращает объект пользователя, а свойство, которое вы хотите использовать в настройках, – user_nicename – подумайте об этом, как о пользователе.

 <?php add_action( 'admin_init', 'wpse27690_register_setting' ); function wpse27690_register_setting() { $user = wp_get_current_user(); register_setting( $user->user_nicename . '_plugin_options', $user->user_nicename . '_plugin_options', 'wpse27690_sanitize' ); } function wpse27690_sanitize( $in ) { // clean stuff here. return $in; } 

Вы можете сделать то же самое при извлечении опции. Это, вероятно, не очень хорошая идея, как указывает Рарст в комментариях. И это, вероятно, не будет работать с пользователями уровня «абонент» или теми, кто не может управлять опциями.

Но если это один или два варианта, проще всего добавить поля на страницу профиля пользователя. Не уверен, что это то, что вы хотите, но вы можете сделать это следующим образом:

 <?php add_action( 'show_user_profile', 'wpse27690_user_form' ); // for you profile add_action( 'edit_user_profile', 'wpse27690_user_form' ); // for other's profiles function wpse27690_user_form( $user ) { // put your form fields here, probably a nonce or something } add_action( 'personal_options_update', 'wpse27690_user_save' ); // you profile add_action( 'edit_user_profile_update', 'wpse27690_user_save' ); // other's profiles function wpse27690_user_save( $user_id ) { // check nonces, permssions first // then save if( isset( $_POST['_your_fields_name'] ) ) update_user_meta( $user_id, 'wpse27690_user_key', esc_attr( $_POST['_your_fields_name'] ) ); } 

Когда вы сохраняете отдельные параметры пользователя, это будет с update_user_meta