Не пускать пользователя на определенную страницу, если у него не заполнены Meta-поля

Есть сайт на WordPress. Подскажите, как реализовать данный функционал? Если у пользователя не заполнены произвольные поля (usermeta) : first_name , last_name , kurst_country, то его не пускает на страницу с id="25". В результате, например, срабатывает редирект на другую страницу.


Ответы (1 шт):

Автор решения: Seredniy
add_action( 'template_redirect', 'redirect_to_specific_page' );

function redirect_to_specific_page() {

    $user_id = get_current_user_id();

    if ( $user_id === 0 ) {
        return;
    }

    $user_meta = get_user_meta( $user_id );

    if ( ! ( isset($user_meta['first_name']) && isset($user_meta['last_name']) && isset($user_meta['kurst_country']) ) ) {

        if ( is_page( 'slug' ) ) {
            wp_redirect( 'http://www.example.dev/your-page/', 301 );
            exit;
        }

    }

}

Немного сумбурно, но смысл должен быть понятен. Можно еще проверять залогинен ли пользователь и отправлять его тоже куда-то.

В коде нужно заменить slug на слаг своей страницы, которую нужно защитить. Ну и ссылку куда редиректить.

→ Ссылка