Redirecionar para página minha conta e de volta para o checkout

O WooCommerce possui várias opções em termos de checkout (finalização de pedido), desde a possibilidade de se finalizar o pedido sem necessidade de uma conta, a realizar o login ou criar uma conta na própria página de checkout.

Uma configuração muito comum que por vezes é deseja por alguns, é a necessidade de criação de conta, porém redirecionando para a página minha conta, e não com o login na própria página de checkout. Uma dificuldade encontrada por alguns usuários é como retornar o usuário de volta a página de checkout após o login nestes cenários, muitas vezes não cobertos pelas respostas de fórum e publicações com snippets. Abaixo veremos um snippet bem simples de como podemos fazer estas duas coisas:

  1. Redirecionar o usuário não conectado para a página minha conta;
  2. Redirecionar o usuário que estava partindo para o checkout, após o login, de volta a ele;
/**
 * Redirect non logged-in customer to my account and back to checkout page.
 */
function redirect_before_checkout() {
	if ( is_user_logged_in() && is_account_page() ) {
		if ( isset( $_GET['return-to-checkout'] ) ) {
			wp_safe_redirect( get_permalink( get_option( 'woocommerce_checkout_page_id' ) ) );
			exit;
		}
	}

	if ( ! is_user_logged_in() && is_checkout() ) {
		$url = add_query_arg( 'return-to-checkout', 'true', get_permalink( get_option( 'woocommerce_myaccount_page_id' ) ) );
		wp_safe_redirect( $url );
		exit;
	}
}
add_action( 'template_redirect', 'redirect_before_checkout' );

É isso, espero que esta tenha sido uma dica útil para vocês.

About Author /

Nossa plataforma é clara, criamos para usar. Problemas... todos temos, mas "continue a nadar" Acesse nosso trabalho no git

Start typing and press Enter to search