Не пускать пользователя на определенную страницу, если у него не заполнены 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 на слаг своей страницы, которую нужно защитить. Ну и ссылку куда редиректить.