【问题标题】:I have a WordPress site and would like to put it in beta or have restricted access?我有一个 WordPress 网站并希望将其置于测试版或限制访问?
【发布时间】:2015-11-28 00:26:43
【问题描述】:

我有一个 WordPress 网站。我想把它放在测试版中,或者只是在短时间内限制有限数量的人访问?我在想我可以创建一个系统,他们可以在其中提交电子邮件,我向他们发送代码,他们可以访问该站点,但是如何访问?我该怎么做呢?

【问题讨论】:

    标签: wordpress login beta-testing


    【解决方案1】:

    最好的选择是为此编写一个自定义的 php 脚本/插件,但如果您不愿意这样做,您可以依赖现有的插件。

    您可以为 wordpress 使用具有电子邮件支持的登陆页面/Comingsoon 页面插件。

    此插件将对任何人隐藏您的 Wordpress 网站,除非他们已登录。

    因此,您可以将登录页面上输入的电子邮件添加到邮件列表,并将非常有限的 Wordpress 用户的帐户详细信息发送给他们。

    这将允许他们在登录后查看和访问您的网站,如果您不想让他们访问,只需在 Wordpress 中删除用户或更改密码即可。

    这样的示例插件: https://wordpress.org/plugins/ultimate-landing-page-and-coming-soon-page

    编辑:

    最简单的方法是在模板文件夹中编写自定义脚本。 在您的模板文件夹“comingsoon.php”中创建一个新文件,我们将使用此文件在电子邮件提交时创建一个新用户。

    在任何其他代码之前在 header.php 顶部输入以下代码。

    <?php
    if ( !is_user_logged_in() ) {
        get_template_part( 'comingsoon' );
        die();
    } else{
        //Check if the user has been registerd longer than 30 days if so redirect him to the comingsoonpage again
        get_currentuserinfo(); 
        $user_data = get_userdata($user_ID);
        $registered_date = $user_data->user_registered;
        if (strtotime($registered_date) <= strtotime('-30 days') && !current_user_can('administrator')){
           get_template_part( 'comingsoon' );
        }
    }
    ?>
    

    上面的代码检查访问者是否登录,如果没有,它会将访问者重定向到comingsoon模板。

    如果访问者已登录,它将检查用户是否在 30 天前创建,如果是,它还会将用户重定向到comingsoon 模板(除非用户以管理员身份登录)

    好的,现在是时候创建您的“comingsoon.php”了,下面 sn-p 中的 html 只是一个示例,您可以随意设置页面样式。

    <?php
        global $wpdb;
    
        $table_name = $wpdb->prefix."comingsoon_users";
    
        //Check if our custom DBTable exists if not create it.
        if ($wpdb->get_var('SHOW TABLES LIKE '.$table_name) != $table_name) {
    
          $charset_collate = $wpdb->get_charset_collate();
    
            $sql = "CREATE TABLE $table_name (
              user mediumint(9) NOT NULL AUTO_INCREMENT,
              email tinytext NOT NULL,
              UNIQUE KEY user (user)
            ) $charset_collate;";
    
            require_once(ABSPATH.'wp-admin/includes/upgrade.php');
            dbDelta($sql);
        }
    
        //IF Email is submitted we will add the user to our custom DB table and retrieve the usersnumber.
        //We will use the usernumber to create an actual Wordpress user.
        if ($_POST['email']){
    
            $user_email = $_POST['email'];
    
            $userresult = $wpdb->get_results( "SELECT user FROM $table_name ORDER BY user DESC LIMIT 1");
    
        foreach ($userresult as $result) {            
            $usernum = $result->user;
        }
    
            $wpdb->insert( 
              $table_name, 
              array( 
                'user' => '',
                'email' => $user_email
              ), 
              array( 
                '%d',
                '%s'
              ) 
            );
    
            $usernum++;
            $user_name = 'User'.$usernum;
    
            //Create Wordpress user with name like: User10 and a random password.
            $user_id = username_exists( $user_name );
            if ( !$user_id and email_exists($user_email) == false ) {
                $random_password = wp_generate_password( $length=12, $include_standard_special_chars=false );
                $user_id = wp_create_user( $user_name, $random_password, $user_email );
            } else {
                $random_password = __('User already exists.  Password inherited.');
            }
        }
    
    ?>
    <!DOCTYPE html>
    <html <?php language_attributes(); ?>>
    
    <head>
    
        <meta charset="<?php bloginfo( 'charset' ); ?>" />
        <meta name="viewport" content="width=device-width, initial-scale=1">
        <meta name="description" content="<?php bloginfo('description'); ?>">
        <meta name="author" content="WebVerder">
    
        <title><?php bloginfo('name'); ?></title>
    
        <!-- Bootstrap Core CSS -->
        <link rel="stylesheet" href="<?php echo get_template_directory_uri(); ?>/inc/css/bootstrap.min.css" type="text/css">
    
        <!-- Custom CSS -->
        <link rel="stylesheet" href="<?php echo get_template_directory_uri(); ?>/inc/css/proverder.css" type="text/css">
    
    </head>
    
    <body id="page-top">
    
        <header>
            <div class="header-content">
                <div class="header-content-inner">
                    <h1>Theme in development!</h1>
                    <h2 class="header">Enter your email below to get a preview account.</h2>
                    <hr>
                    <form method="POST">
                        <div class="form-group" style="max-width: 500px; margin: 0 auto 0;">
                            <input type="email" class="form-control" name="email" placeholder="Pleace enter your Email!"><input type="submit">
                        </div>
                    </form>                
                </div>
            </div>
        </header>
    
    </body>
    
    </html>
    

    尚未对代码进行全面测试,所以如果它没有按预期工作,请告诉我!

    请记住,用户必须通过转到 /wp_login 网址登录,您可以在您即将到来的页面上添加指向登录页面的链接。

    但是显示 wordpress 后端登录表单并不好,因此您可以使用插件来设置登录页面的样式,或者包含一个可以通过 Ajax 登录的插件。

    使用 Ajax,您可以让用户从您即将推出的页面中登录,然后在登录后将其重定向到实际网站。

    希望对你有所帮助:)

    【讨论】:

    • 最好的选择是为此编写一个自定义的 php 脚本/插件。我该怎么做呢?
    • @ExtremeBeginner。我花了一些时间为您编写代码的开头。检查我上面的编辑!没有完全测试,如果遇到问题请告诉我!
    • 注意:编辑上面的代码comingsoon.php有一些问题!
    【解决方案2】:

    有多种选择,具体取决于您已经拥有的(您是在托管)

    1. 使用 vpn,让他们选择使用 vpn 登录并给他们本地 ip 或让他们从您的 dns 服务器获取 dns,以便他们可以使用名称(仅当使用 vpn 连接时
    2. 使用用户名 + 密码组合通过 .htaccess 文件授予访问权限
    3. 仅授予来自 .htaccess 文件中定义的 ip 的访问权限

    【讨论】:

    • 我正在使用 Dreamhost。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-01-26
    • 1970-01-01
    • 2014-07-13
    • 1970-01-01
    • 2013-10-18
    • 2013-11-25
    • 2021-10-10
    相关资源
    最近更新 更多