我有一个WordPress网站。我想把它放在测试版中,还是在短时间内限制有限数量的人访问?我在想我可以创建一个系统,让他们提交电子邮件,我给他们发一个代码,他们可以访问网站,但怎么做呢?我该怎么做?
最好的选择是为此编写一个自定义的php脚本/插件,但如果你不愿意这样做,你可以依赖现有的插件。
你可以为wordpress使用一个支持电子邮件的登陆页/漫画页插件。
这个插件将对任何人隐藏你的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.php"了。下面的代码段中的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 url进行登录,您可以在即将到来的页面上添加登录页面的链接。
但是,显示wordpress后端登录表单是不好的,这样你就可以使用一个插件来设计登录页面的样式,或者包含一个可以通过Ajax登录的插件。
使用Ajax,您可以让用户从即将到来的页面中登录,然后在登录到实际网站后重定向他们。
希望这能帮助你:)
有几个选项,这取决于您已经拥有的
- 使用vpn,让他们可以选择使用vpn登录,并给他们本地ip,或者让他们从你的dns服务器获取dns,这样他们就可以使用一个名称(仅当使用vpn连接时
- 使用用户名+密码组合使用.htaccess文件授予访问权限
- 仅从.htaccess文件中定义的ip授予访问权限