有没有办法将用户配置文件设置为草稿?

时间:2016-12-13 作者:NNCCBB

是否有一种方法可以在前端隐藏用户配置文件,同时仍允许在后端访问其信息?

类似于将帖子或页面设置为“草稿”,但对于用户来说,这将非常有效。有没有办法做到这一点?

2 个回复
SO网友:prosti

用户的数据库表包含user_status 作为整数:

    $users_single_table = "CREATE TABLE $wpdb->users (
  ID bigint(20) unsigned NOT NULL auto_increment,
  user_login varchar(60) NOT NULL default \'\',
  user_pass varchar(255) NOT NULL default \'\',
  user_nicename varchar(50) NOT NULL default \'\',
  user_email varchar(100) NOT NULL default \'\',
  user_url varchar(100) NOT NULL default \'\',
  user_registered datetime NOT NULL default \'0000-00-00 00:00:00\',
  user_activation_key varchar(255) NOT NULL default \'\',
  user_status int(11) NOT NULL default \'0\',
  display_name varchar(250) NOT NULL default \'\',
  PRIMARY KEY  (ID),
  KEY user_login_key (user_login),
  KEY user_nicename (user_nicename),
  KEY user_email (user_email)
) $charset_collate;\\n";
TheWP_Users 类目前没有任何更改state属性的内容,甚至也没有保留该属性。

enter image description here

里面有一个功能wp-admin/includes/ms.php 这可能会告诉你该怎么走。

update_user_status( $user_id, \'spam\', \'1\' );
但仅适用于多站点:

/wp-admin/includes/admin.php:
82  if ( is_multisite() ) {
83      require_once(ABSPATH . \'wp-admin/includes/ms-admin-filters.php\');
84:     require_once(ABSPATH . \'wp-admin/includes/ms.php\');
85      require_once(ABSPATH . \'wp-admin/includes/ms-deprecated.php\');
86  }
看起来是这样的:

function update_user_status( $id, $pref, $value, $deprecated = null ) {
    global $wpdb;

    if ( null !== $deprecated )
        _deprecated_argument( __FUNCTION__, \'3.0.2\' );

    $wpdb->update( $wpdb->users, array( sanitize_key( $pref ) => $value ), array( \'ID\' => $id ) );

    $user = new WP_User( $id );
    clean_user_cache( $user );

    if ( $pref == \'spam\' ) {
        if ( $value == 1 ) {
            /**
             * Fires after the user is marked as a SPAM user.
             *
             * @since 3.0.0
             *
             * @param int $id ID of the user marked as SPAM.
             */
            do_action( \'make_spam_user\', $id );
        } else {
            /**
             * Fires after the user is marked as a HAM user. Opposite of SPAM.
             *
             * @since 3.0.0
             *
             * @param int $id ID of the user marked as HAM.
             */
            do_action( \'make_ham_user\', $id );
        }
    }

    return $value;
}
你可以使用类似的东西the action hook make_draft_user, 在您的功能中可能_20161214_update_user_status( $user_id, \'draft\', \'1\' );

在你自己的内心make_draft_user 钩子你可以定义做什么。

所以WordPress开箱即用不提供草稿用户。也许有一天会有清晰的用例场景。可能状态将是一个字符串,而不是int(POST就是这种情况)。

SO网友:NNCCBB

在数据库中将user\\u status设置为2似乎可以做到这一点