Как внести в список определенные почтовые домены при регистрации - PullRequest
0 голосов
/ 31 января 2019

У нас есть сайт публикации на WordPress, на который мы хотим, чтобы любой мог подписаться, но люди, которые зарегистрируются на определенных доменах электронной почты, будут иметь доступ к большему количеству контента.Мы используем плагин WordPress Proid Memberships Pro и пытаемся выяснить, как назначить им членство при регистрации, но мы не знаем php.

Причина, по которой мы не можем просто сделать бесплатный уровень членства для них, чтобы они могли выбирать при регистрации, состоит в том, что мы хотим, чтобы они регистрировались на нашем сайте через виджет входа в систему Auth0, который не позволяет имвыберите уровни членства.

Мы думали, что массив будет полезен, что-то вроде:

$domain_name = array("ipqpubs.com", "ipqpubs.org");

if (in_array("ipqpubs.com", $domain_name))

или

if (domain_list($domains))
    $hasaccess = true;

Но мы не знаем, сработает ли этоили куда идти оттуда.Мы нашли некоторые полезные вещи в их файлах, например:

function pmpro_hasMembershipLevel( $levels = null, $user_id = null ) {
    global $current_user, $wpdb;

    $return = false;

    if ( empty( $user_id ) ) {
        $user_id = $current_user->ID;
    }

if ( ! empty( $user_id ) && is_numeric( $user_id ) ) { // get membership 
levels for given user
        $membership_levels = pmpro_getMembershipLevelsForUser( $user_id );
    } else {
        $membership_levels = null; // non-users don't have levels
    }

pmpro_getMembershipLevelsForUser( $user_id );
return pmpro_changeMembershipLevel( 0, $user_id, $old_level_status );
}           

Поэтому мы подумали, что, возможно, один из них или что-то подобное можно использовать, чтобы назначить им уровень членства, как только они зарегистрируются, чтобы они ненужно делать что-то еще и все можно посмотреть на нашем сайте.

Заранее спасибо за помощь

1 Ответ

0 голосов
/ 31 января 2019

Если вы можете получать электронную почту пользователей, вы можете попытаться сопоставить ее с регулярным выражением, содержащим следующее:

$userEmail = $currentUser->email ?? ""; // Assumed property of $currentUser
if (preg_match('/(@ipqpubs.com|@ipqpubs.org)/', $userEmail)) {
    // User has an email that matches one of the domains!
} else {
    // User does not have an email that matches any of the domains.
}

Если список «одобренных» доменов становится длинным, вы можете сделать следующее:

$approvedDomains = ['ipqpubs.com', 'ipqpubs.org'];
$approvedDomainFilter = '/('.join('|@', $approvedDomains).')/';

$userEmail = $currentUser->email ?? ""; // Assumed property of $currentUser
if (preg_match($approvedDomainFilter, $userEmail)) {
    // User has an email that matches one of the domains!
} else {
    // User does not have an email that matches any of the domains.
}

Не используйте это решение как есть.Вы должны убедиться, что переменная $ userEmail установлена ​​на фактическую электронную почту пользователя, и написать код, который должен быть выполнен, если электронная почта совпадает.

...