我认为你的想法很好:创建一个钩住“show\\u user\\u profile”和“edit\\u user\\u profile”操作的函数。在此函数中,使用条件仅为管理员显示textarea,并将此textarea的内容(另存为用户元)显示给配置文件的所有者。
类似(非常粗糙且未经测试):
function custom_profile_content ( $user ) {
if ( current_user_can(\'edit_users\') ) {
echo \'<table class="form-table">\';
$now = get_user_meta( $user->ID, \'custom_user_content\', true ) ? : "";
printf( \'<tr><th><label for="custom_user_content">%s</label></th>\', esc_html__(\'Custom User Content\', \'yourtextdomain\') );
printf(\'<td><textarea name="custom_user_content" id="custom_user_content" rows="4" class="large-text" />%s</textarea></td></tr>\', esc_textarea($now) );
echo \'</table>\';
} elseif( $user->ID == wp_get_current_user()->ID ) {
echo \'<h3>\' . __(\'Hi, there\', \'yourtextdomain\') . \'</h3>\';
echo \'<p>\' . $now . \'</p>\';
}
}
function custom_profile_content_save ( $user_id ) {
if ( isset($_POST[\'custom_user_content\']) ) update_user_meta( $user_id, \'custom_user_content\', $_POST[\'custom_user_content\'] );
}
add_action( \'show_user_profile\', \'custom_profile_content\' );
add_action( \'edit_user_profile\', \'custom_profile_content\' );
add_action( \'personal_options_update\', \'custom_profile_content_save\' );
add_action( \'edit_user_profile_update\', \'custom_profile_content_save\' );