sesion registro redireccionar pagina inicio hacer formulario despues como archivos php wordpress woocommerce checkout cart

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 que is_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: