Как перенаправлять пользователя на определённый URL после авторизации

По умолчанию внутренний метод WooCommerce process_login() отправляет всех авторизовывающихся пользователей сайта на wc_get_page_permalink( 'myaccount' ), короче говоря в личный кабинет (я сейчас говорю про стандартную форму входа WooCommerce).

Не могу не порекомендовать вам свой видеокурс по WooCommerce, в котором мы создаём тему для интернет-магазина с нуля на основе готовой вёрстки 🚀

Но мы можем изменить это легко при помощи хука woocommerce_login_redirect.

add_filter( 'woocommerce_login_redirect', 'truemisha_login_redirect', 25, 2 );
 
function truemisha_login_redirect( $redirect, $user ) {
 
	$redirect = site_url();
	return $redirect;
 
}
  • Второй параметр функции – это объект WP_User, который вы можете использовать для создания каких-либо дополнительных условий. Например добавить проверку роли пользователя wc_user_has_role( $user, 'customer' ).
  • site_url() – возвращает ссылку на главную страницу сайта, вы можете поменять её на что угодно другое, только если этот URL находится на вашем собственном сайте, внешние урлы будут проигнорированы.
  • Если вам ну очень хочется редиректнуть на левый домен, то его нужно будет прописать в отдельном фильтр-хуке allowed_redirect_hosts.

Миша

В последние годы я долго не знал, что мне делать с сайтом misha.blog, ведь он практически не приносит никакого профита, но недавно я осознал, что моя миссия – способствовать распространению WordPress. Ведь WordPress – это лучший движок для разработки сайтов – как для тех, кто готов использовать заложенную структуру этой CMS, так и для тех, кто предпочитает headless решения.

Сам же я впервые познакомился с WordPress в 2009 году. Организатор WordCamp. Преподаватель в школах Epic Skills и LoftSchool.

Если вам нужна помощь с вашим сайтом или может даже разработка с нуля на WordPress / WooCommerce — пишите. Я и моя команда сделаем вам всё на лучшем уровне.

Оставить комментарий

Если вы хотите добавить код, не забудьте обернуть его в <pre lang="php"></pre>, если же код – меньше одной строчки, то можно и в <code></code>.