【问题标题】:How to Recreate users table in WordPress?如何在 WordPress 中重新创建用户表?
【发布时间】:2020-03-04 09:42:58
【问题描述】:

我无法登录我的 WordPress 网站。网站运行正常,用户凭据正确。

后来我发现users 表不知何故损坏了,现在它被删除了。

您能解释一下如何使用管理员用户登录凭据创建users 表,以便我可以重新登录到我的 WordPress?

我可以访问 phpMyAdmin。

【问题讨论】:

    标签: wordpress


    【解决方案1】:

    假设您的表名是 wp_users 调整您的前缀。

    发件人:wp-admin\includes\schema.php Line 191

    CREATE TABLE `wp_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)
    )
    

    您还可以通过 phpMyAdmin 界面添加主键和AUTO_INCREMENT,如下所示:

    然后按照以下说明操作:

    How to Create a new Admin User for A WordPress Site via MySQL (PHPMyAdmin)?

    【讨论】:

    • 您好 Howard,您的解决方案创建了 wp_users 表。但就像 Gaurav 的解决方案一样,该表并未列在 phpMyAdmin 的左侧栏中。我可以在右侧看到wp_users i.imgur.com/Ze2Vayv.png 在搜索栏中,wp_users 没有显示在结果中 i.imgur.com/7L3yDRl.png 但是当我创建 wp_users 时出现左侧分页。因此,如果我从该列表中选择 2,我会看到 i.imgur.com/X3MkyCd.png 如果我点击 wp_users 表,我会看到用户,但 i.imgur.com/WQbeVhJ.png 我看不到编辑、删除选项。
    • 我添加了一个来自 phpMyAdmin 的屏幕截图,这样您就可以看到需要在结构中调整哪些内容才能使您现有的表格正常工作。但是你必须给所有的 ID 编号。因此,删除表 wp_users 并重新开始可能会更容易。同时删除任何 wp_usermeta
    【解决方案2】:

    你可以制作一个小的PHP文件,我们称之为make_user.php,包含以下代码:

    <?php
    define('ADMIN_USER', 'my_admin_user');
    define('ADMIN_MAIL', 'my_admin@mail.com');
    require_once('./wp-load.php');
    
    if (! get_user_by('email', ADMIN_MAIL)) {
      $passwd = wp_generate_password(20);
      $user_id = wp_create_user(ADMIN_USER, $passwd, ADMIN_MAIL);
      $user = get_user_by('id', $user_id);
      $user->set_role('administrator');
      echo "User created.".PHP_EOL;
      //echo "Password is: $passwd";
    } else {
      echo "User already exists.";
    }
    

    将您的 ADMIN_USER(帐户名称)和 ADMIN_MAIL 更改为您想要的任何内容。

    将其上传到您的 WP 安装的根文件夹并通过 http://your.host/make_user.php 调用它。 您可以决定取消注释回显密码的行并使用它,或者只是通过常规的忘记密码功能重置它(我会做后者)。

    完成后删除文件。

    【讨论】:

    • 我最初尝试了您的解决方案,但它抛出 wp_user 表不存在。所以,我使用了其他的解决方案并试图再次运行你的解决方案,这是我得到的错误。致命错误:未捕获错误:在 /home/example.com/public_html/make_user.php:10 中调用 bool 上的成员函数 set_role() 堆栈跟踪:在 /home/example.com/public_html/ 中抛出 #0 {main}第 10 行的 make_user.php 您的网站出现严重错误。
    【解决方案3】:

    第一步:在wp根目录下创建user_reg.php文件,文件包含以下代码

    /*
    * Code start
    */ 
    
    //Create wp_users table
    
    include 'wp-load.php';
    
    global $table_prefix, $wpdb;
    
    $tblname = 'users';
    $wp_track_table = $table_prefix . "$tblname ";
    if($wpdb->get_var( "show tables like '$wp_track_table'" ) != $wp_track_table) {
    
        $sql = "CREATE TABLE IF NOT EXISTS {$wp_track_table} (
          `ID` bigint(20) UNSIGNED NOT NULL,
          `user_login` varchar(60) COLLATE utf8mb4_unicode_520_ci NOT NULL DEFAULT '',
          `user_pass` varchar(255) COLLATE utf8mb4_unicode_520_ci NOT NULL DEFAULT '',
          `user_nicename` varchar(50) COLLATE utf8mb4_unicode_520_ci NOT NULL DEFAULT '',
          `user_email` varchar(100) COLLATE utf8mb4_unicode_520_ci NOT NULL DEFAULT '',
          `user_url` varchar(100) COLLATE utf8mb4_unicode_520_ci NOT NULL DEFAULT '',
          `user_registered` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
          `user_activation_key` varchar(255) COLLATE utf8mb4_unicode_520_ci NOT NULL DEFAULT '',
          `user_status` int(11) NOT NULL DEFAULT '0',
          `display_name` varchar(250) COLLATE utf8mb4_unicode_520_ci NOT NULL DEFAULT ''
        ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_520_ci;";
    
        require_once( ABSPATH . '/wp-admin/includes/upgrade.php' );
        dbDelta($sql);
    }
    
    
    //Create user 
    
    //start: Fill you details here 
    $user_login = 'lores'; 
    $user_email = 'lores@gmail.com';
    $user_pass = 'lores@123';
    $display_name = 'mark lores';
    $first_name = 'mark';
    $last_name = 'lores';
    //end: Fill you details here 
    
    
    $flag_1 = 0;
    $flag_2 = 0;
    
    $check_username_exists = username_exists( $user_login );
    if ($check_username_exists) {
        $flag_1 = 1;
    }
    
    $check_email_exists = email_exists($user_email);
    if ($check_email_exists) {
        $flag_2 = 1;
    }
    
    
    if ($flag_1 == 0 && $flag_2 == 0) { 
    
         $userdata = array(
                    'user_login'  =>  $user_login,
                    'user_pass'   =>  $user_pass,
                    'user_email'  =>  $user_email,
                    'display_name'=>  $display_name,
                    'first_name'  =>  $first_name,
                    'last_name'   =>  $last_name
                );
    
        $user_id = wp_insert_user($userdata);
    
        wp_update_user( array ('ID' => $user_id, 'role' => 'administrator') );
    
        if(is_wp_error($user_id)){
    
            echo $user->get_error_message();
    
        }else{
    
            echo "User created successfully";
        }
    
    
    }else{
    
        echo "User already exist";
    }
    
    
    /*
    * Code end
    */ 
    

    第 2 步:在浏览器上运行文件,例如 http://example.com/user_reg.php

    第 3 步:如果用户创建成功,则尝试使用给定的用户名和密码登录

    【讨论】:

    • 您好 Gaurav,您的解决方案创建了wp_users 表,我可以看到用户注册成功。但该表并未列在 phpMyAdmin 的左侧栏中。我可以在右侧看到wp_users i.imgur.com/Ze2Vayv.png 在搜索栏中,wp_users 没有显示在结果中 i.imgur.com/7L3yDRl.png 但是当我创建 wp_users 时出现左侧分页。因此,如果我从该列表中选择 2,我会看到 i.imgur.com/X3MkyCd.png 如果我点击 wp_users 表,我会看到用户但 i.imgur.com/WQbeVhJ.png
    • 在这里我可以在您的屏幕截图中看到 wp_users 表已经创建并损坏。请从数据库中重命名或删除 wp_usres 表,但在此之前,您必须进行表备份并再次执行第 2 步。
    • 你好 Gaurav,有趣的是,我今天创建了这个 wp_users。每次我这样做时,都会发生同样的错误。
    • 如果您今天创建了 wp_usres 那么请检查表是否损坏并先告诉我如果表已损坏因此您无法对 wp_usres 表执行编辑删除操作以及为什么自动wp_usres 表中的递增 ID 为 0 prnt.sc/rc2f1s
    • 注意:自动递增的ID应该像这样prnt.sc/rc2hkt
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-07-21
    • 1970-01-01
    • 1970-01-01
    • 2020-08-15
    • 2023-03-28
    • 2020-06-20
    • 2021-11-30
    相关资源
    最近更新 更多