为每个用户创建自定义内容的个人资料页面的标准方式?

时间:2013-09-18 作者:Omar Tariq

我需要一个解决方案,我需要一个配置文件页面(只有管理员和该用户可以访问),为我注册的每个新用户提供自定义内容(即不同用户的不同内容)。我想到了很多想法,比如在管理员的WP仪表板中为每个用户创建一个textarea,然后将textarea的内容显示到相应的用户配置文件页面。

我是一名WordPress程序员,我会以某种方式想出这个问题的解决方案。然而,我想听听这是推荐的和最标准的方法。

欢迎任何一种解决方法。但是,应首选标准化。

1 个回复
最合适的回答,由SO网友:gmazzap 整理而成

我认为你的想法很好:创建一个钩住“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\' );

结束