注册设置时(假设使用的是设置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