WordCamp Haneda 2019 - 4月20日(土)、4月21日(日) 大田区産業プラザPiOにて開催

ユーザー登録を制限するフィルター

はじめに

現在、WordPress で Webサービスを構築中です。6日間の期限付き使用で、その際に、サーバーを1人のユーザが登録したら占有させたいと思い、option_users_can_register というフィルターを使いました。日本語で検索しても出てこないので、入用な方もいるかもしれないと思い書きます。

使い方

投稿者権限で、登録されたメタ情報を探して、それがあれば制限するという事をしています。

add_filter( 'option_users_can_register', 'limit_capa_users' );
function limit_capa_users( $option ) {

if ( FALSE === $option ) return $option;

global $wpdb;
$wp_capa = 'wp_capabilities';
$author = '%%author%%';
$user_id = $wpdb->get_var($wpdb->prepare("SELECT user_id
FROM $wpdb->usermeta
WHERE meta_key = %s
AND meta_value LIKE %s"
, $wp_capa, $author));

if ( $user_id ) return FALSE;

return $option;

}

その他

ユーザー数を登録数で制限させるような事もできます。以下の例ですと100名以上のユーザー登録で制限されます。

add_filter( 'option_users_can_register', 'limit_capa_user_count' );
function limit_capa_user_count( $option ) {

if ( FALSE === $option ) return $option;

global $wpdb;
$user_count = $wpdb->get_var("SELECT COUNT(ID) FROM $wpdb->users");

$limit = 100;
if ( $user_count > $limit ) return FALSE;

return $option;

}