我想知道是否有办法限制可以注册到Wordpress网站的用户数量?
例如,我想创建一个小网站,为客户保存信息,在那里他们最多只能有(例如)50个用户。其想法是,您需要登录才能查看该网站,并且只允许创建一定数量的用户。也许有人知道一个插件可以做到这一点?
我想知道是否有办法限制可以注册到Wordpress网站的用户数量?
例如,我想创建一个小网站,为客户保存信息,在那里他们最多只能有(例如)50个用户。其想法是,您需要登录才能查看该网站,并且只允许创建一定数量的用户。也许有人知道一个插件可以做到这一点?
正如您在WordPress Option Reference, 有一个选项叫做users_can_register
. 您可以根据默认设置在(网络)站点设置中进行设置。
1
=> 是0
=> 不,像往常一样:有一个过滤器可以从插件截取。"option_{$option_name}"
因此,您只需将回调附加到此筛选器,并检查具有WP_User_Query
对于get_current_blog_id()
.<?php
namespace WPSE;
/** Plugin Name: WPSE (#110036) Limit Total Users per page */
defined( \'ABSPATH\' ) or exit;
\\add_filter( \'option_users_can_register\', \'limit_total_users\' );
function limit_total_users( $option )
{
// Nothing to do here
if ( 0 === $option )
return $option;
static $users = null;
$limit = 50;
if ( null === $users )
{
$users_query = new \\WP_User_Query( array(
\'blog_id\' => get_current_blog_id()
) );
$users = $users_query->get_total();
}
// Abort if we\'re above the limit
if ( $limit > $users )
return 0;
return $option;
}
这个小插件的好处是,如果注册已经关闭,它不会进行额外的查询。借鉴凯撒的答案:
add_filter( \'option_users_can_register\', \'limit_total_users\' );
function limit_total_users( $option )
{
// Registration turned off manually. Nothing to do here.
if ( 0 === $option )
return $option;
$user_count = count_users();
// Abort if we\'re above the limit
if ( $user_count[\'total_users\'] > 50 ) {
return 0;
}
// The threshold wasn\'t reached yet.
return $option;
}
这方面的有趣信息count_users()
函数是它实际返回一个数组,其中包含每个角色的计数。您可能希望确定您限制的角色,或者简单地加/减以说明差异,例如,管理员的数量-因为您可能不希望将自己计算在总数中。此解决方案与其他解决方案的不同之处在于,中的主要工作是完成用户注册。用户注册后,计算总用户数,然后users_can_register
如有必要,将更新选项。这似乎是减少前端处理时间的最佳方法。连接到的相关函数pre_option_users_can_register
通过在“常规设置”中切换开关并获得额外用户,防止博客管理员作弊。从技术上讲,只有该功能是必要的,但我已经解释了其他功能的原因。
function count_reg_users_wpse_110036() {
global $wpdb;
$users = $wpdb->get_var("SELECT COUNT(ID) FROM {$wpdb->users}");
return $users;
}
function limit_users_wpse_110036() {
$count = apply_filters(\'limit_user_count\',4);
$users = count_reg_users_wpse_110036();
if ($users >= $count) {
update_option(\'users_can_register\',0);
}
}
add_action(\'user_register\',\'limit_users_wpse_110036\');
function limit_user_option_wpse_110036($option) {
remove_filter(\'pre_option_users_can_register\',\'limit_user_option_wpse_110036\');
$reg = get_option(\'users_can_register\');
if (0 === $reg) {
return 0;
}
$count = apply_filters(\'limit_user_count\',4);
$users = count_reg_users_wpse_110036();
if ($users >= $count) {
update_option(\'users_can_register\',0);
return 0;
} else {
return $option;
}
}
add_filter(\'pre_option_users_can_register\',\'limit_user_option_wpse_110036\');
我想在我的wordpress网站上实现一个系统。在我的网站上,有一群用户注册了。这是一个社交网站。我基本上希望有一个分级系统,根据用户的技能对其进行排名。我使用buddy press为用户创建他们自己的配置文件。我几乎想在他们的个人资料中添加一个标准,一个下拉菜单,上面写着给你的游戏技能打分1-10。但问题是,每个人都会把自己排得很高。我几乎想要一个用户可以自己去排名的系统,但如果需要的话,我可以进来修改排名。有什么建议吗?