Redirigir usuarios no logueados a la página de inicio en WooCommerce con is_user_logged_in()

27 sept 2012, 06:20:32
Vistas: 19.5K
Votos: 2

Actualmente estoy usando WooCommerce y me gustaría redirigir a los usuarios no logueados a la página de inicio, pero tengo algunos problemas para determinar dónde debería implementar esto.

He investigado y determinado que usando is_user_logged_in() puedo verificar si el usuario está logueado.

Intenté implementarlo en woocommerce/woocommerce-functions.php

// Cuando los permalinks predeterminados están habilitados, redirige la página de tienda a la URL del archivo de tipo de publicación
    if (is_user_logged_in() && isset($_GET['page_id']) && $_GET['page_id'] > 0 && get_option( 'permalink_structure' )=="" && $_GET['page_id'] ==     woocommerce_get_page_id('shop') ) :
        wp_safe_redirect( get_post_type_archive_link('product') );
        exit;
    endif;

pero la página sigue siendo visible

0
Todas las respuestas a la pregunta 3
1

Primero, nunca edites los plugins de otras personas ni los archivos principales de WordPress.

Además, utiliza llaves en lugar de formato bonito, ya que el formato bonito rompe el resaltado de código del IDE, el emparejamiento de llaves, los verificadores de sintaxis y otras herramientas útiles.

Así que coloca este código:

// Cuando los enlaces permanentes predeterminados están habilitados, redirige la página de la tienda a la URL del archivo del tipo de publicación
if (is_user_logged_in() && isset($_GET['page_id']) && $_GET['page_id'] > 0 && get_option( 'permalink_structure' )=="" && $_GET['page_id'] ==     woocommerce_get_page_id('shop') ) {
    wp_redirect( get_post_type_archive_link('product') );
    die();
}

Ya sea en:

  • la parte superior de functions.php
  • Un plugin dedicado
  • En la llamada del hook Init
27 sept 2012 15:59:44
Comentarios

gracias por la recomendación, intentaré agregar esto al functions.php

bugz bugz
27 sept 2012 17:03:03
8

Vas a querer insertar tu código en la parte superior de las plantillas de página para las páginas de Woo que deseas que afecte la redirección, en lugar del archivo de funciones. Por ejemplo, si quieres redirigir a los usuarios cuando intentan acceder a una página de producto individual, podrías colocarlo al principio del archivo plugins->woocommerce->templates->single-product.php.

Sin embargo, al editar plantillas, recomendaría hacer una copia y colocarla en el directorio de tu tema, para que cuando Woo se actualice no sobrescriba los cambios que hayas realizado. Siguiendo el ejemplo anterior (aplicado a mi tema), copiaría single-product.php y lo colocaría en el directorio themes->agency y luego haría los cambios en ese archivo allí. Tu tema siempre usará ese archivo antes que el del directorio de plantillas de Woo.

27 sept 2012 15:29:13
Comentarios

gracias, ¿sabes qué página habría que modificar para redirigir a los usuarios que ven la página inicial de la tienda?

bugz bugz
27 sept 2012 17:00:16

Dado que la página de la tienda es en realidad un loop, podrías agregar un hook en tu archivo functions.php. Copia esto y dime si funciona. http://pastie.org/4830106. Tengo cosas extrañas en mi página de tienda (básicamente la eliminé) así que no puedo probarlo yo mismo. Si no funciona, lo arreglaré.

Kyle Kyle
27 sept 2012 18:19:02

hmm después de agregar eso a mi archivo functions.php del tema, todo el sitio dejó de funcionar. ¿se suponía que debía agregarlo al archivo de funciones de woocommerce?

bugz bugz
27 sept 2012 21:10:49

Perdón por el error de sintaxis perezoso, borra eso e intenta esto http://pastie.org/4830960

Kyle Kyle
27 sept 2012 21:17:03

Vale, he probado este código y definitivamente funciona: http://pastie.org/4831059. Pega eso en el archivo functions.php

Kyle Kyle
27 sept 2012 21:36:55

bugz - ¿Funcionó esto?

Kyle Kyle
28 sept 2012 00:22:13

Si esto funcionó, ¿podrías verificar esta respuesta?

Kyle Kyle
28 sept 2012 18:11:27

No estoy de acuerdo con insertar ese código en la parte superior de las plantillas de página para las páginas de Woo. Se debería usar el template_redirect action hook.

cybmeta cybmeta
8 ago 2015 17:15:55
Mostrar los 3 comentarios restantes
1

Utiliza el código en functions.php:

add_filter('woocommerce_login_redirect', 'wc_login_redirect');

function wc_login_redirect( $redirect_to ) {
     $redirect_to = 'https://www.example.com/';
     return $redirect_to;
}
27 jul 2015 11:57:53
Comentarios

Por favor [edita] tu respuesta y proporciona alguna explicación. Publicar un fragmento de código sin explicación es una mala respuesta.

Mayeenul Islam Mayeenul Islam
27 jul 2015 12:53:03