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:
- Redirecionar o usuário não conectado para a página minha conta;
- 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.