php - registro - redireccionar inicio de sesion wordpress
Redireccionamiento de inicio de sesiĆ³n de WooCommerce basado en carro (1)
Quiero aplicar el siguiente caso 2:
If User not logged in and cart is empty:
then redirect user to login and then my account
If User not logged in and cart has product:
then redirect user to login and after login redirect to checkout
Mi código :
function wpse_Nologin_redirect() {
if (
! is_user_logged_in()
&& (is_checkout())
) {
// feel free to customize the following line to suit your needs
$MyLoginURL = "http://example.in/my-account/";
wp_redirect($MyLoginURL);
exit;
}
}
add_action(''template_redirect'', ''wpse_Nologin_redirect'');
El código anterior está funcionando bien para mi primer caso. Pero en mi segundo caso, cuando if ( sizeof( $woocommerce->cart->cart_contents ) == 0 ) {}
carrito con if ( sizeof( $woocommerce->cart->cart_contents ) == 0 ) {}
, mi sitio deja de funcionar.
Estoy poniendo esto en functions.php del tema.
¿Que estoy haciendo mal?
Gracias
Primero, para verificar si el carrito está vacío , debe usar
WC()->cart->is_empty()
, ya queis_empty()
es un método condicional de la clase WC_cart .Después, en la página de pago (en ambos casos) si el usuario no está conectado, desea redirigirlo a mi página de cuenta (iniciar sesión / crear área de cuenta).
Ahora en la página my_count , cuando un usuario registrado tiene algo en su carrito, quiere redirigirlo a la página de pago.
Aquí está el código que necesita:
function woocommerce_custom_redirects() {
// Case1: Non logged user on checkout page (cart empty or not empty)
if ( !is_user_logged_in() && is_checkout() )
wp_redirect( get_permalink( get_option(''woocommerce_myaccount_page_id'') ) );
// Case2: Logged user on my account page with something in cart
if( is_user_logged_in() && !WC()->cart->is_empty() && is_account_page() )
wp_redirect( get_permalink( get_option(''woocommerce_checkout_page_id'') ) );
}
add_action(''template_redirect'', ''woocommerce_custom_redirects'');
Naturalmente, esto va en el archivo function.php de su tema hijo activo (o tema) o también en cualquier archivo de complemento.
Este código está probado y funciona.
Referencia: