Tienda WooCommerce sólo visible a usuarios registrados

(Actualizado 19/06/2015 – Después de hacer varias pruebas y gracias al comentario de David Randulfe, ya no es necesario usar el plugin Groups para restringir el acceso a usuarios registrados).

Si has llegado hasta aquí buscando como un desesperado la solución a este problema (a mi también me pasó), estás de suerte porque en este artículo te voy a explicar cómo permitir el acceso a tu tienda WooCommerce sólo para usuarios registrados, sin tener que gastarte un sólo céntimo en un plugin y logrando que funcione a la perfección.

A muchos les sonará raro eso de restringir el acceso a la tienda online sólo para un determinado grupo de personas. Si lo que se pretende es vender, ¿qué sentido tiene permitir que sólo unos pocos puedan comprar?

Yo también me hice esa pregunta en su momento, pero lo cierto es que esta cuestión es una de las que más se repite en las comunidades y foros sobre WooCommerce.

Como he dicho en otras ocasiones, cada negocio es un mundo y no todos usan su plataforma ecommerce para vender a cualquier persona. Un ejemplo de ello podría ser, tiendas que sólo pueden vender a mayoristas, como; empresas registradas o autónomos. O también fábricas que sólo pueden vender a distribuidores oficiales de la marca.

Son sólo algunos ejemplos, pero seguro que hay muchísimos más casos.

Permitir el acceso a tu tienda WooCommerce sólo a usuarios registrados.

Para poder hacer tu tienda WooCommerce accesible sólo a los usuarios registrados, vas a necesitar 2 plugins gratuitos un sólo plugin y un pequeño código que te explicaré, al final de esta entrada, para qué sirve y donde insertarlo.

Los 2 plugins de los que hablo son:

  1. Groups. Un plugin para configurar membresías y controlar el acceso a cualquier sección de WordPress y WooCommerce. (YA NO ES NECESARIO CON EL NUEVO CÓDIGO)
  2. Sidebar Login. Un plugin de Mike Jolley -unos de los desarrolladores de WooCommerce- que permite insertar un formulario de acceso como widget.

Lo primero que debes hacer es instalar y activar ambos plugins. Una vez activados, deberás definir los ajustes de configuración de cada uno, tal y como te explico a continuación:

Configurar plugin Groups. (Puedes saltarte este paso)

  1. Desde el panel de administración de WordPress, entra en «Grupos > Grupos«.
  2. Verás que ya existe un grupo llamado «Registered» que es el que el plugin crea por defecto. Haz clic en el icono del lápiz, situada la derecha, para editar el grupo.
  3. Añade la capacidad «group_read_post» en el campo «Capacidades» y después haz clic en «Guardar«.
    Restringir acceso página tienda WooCommerce
  4. Vuelve al panel de administración y entra en «Páginas > Todas las páginas«. Busca la página de «Tienda» y haz clic en «Editar«.
  5. Justo al lado del editor de texto -arriba a la derecha- aparece un nuevo apartado llamado «Restricciones de acceso«. En ese apartado debes añadir la capacidad «groups_read_post» en el campo «Forzar permiso de lectura«.
  6. Por último, haz clic en «Actualizar» para guardar los cambios.
  7. Repite estos tres últimos pasos para las páginas de «Carro» y «Finalizar compra«.

Con esta configuración ya se debería de restringir el acceso a la página de la tienda WooCommerce para todos aquellos usuarios que no estén registrados.

Sin embargo, la página de tienda de WooCommerce es algo peculiar y aunque el plugin Groups consigue ocultar el enlace del menú principal hacia la tienda para los usuarios no registrados, si que permite que cualquier persona -esté registrada o no- pueda acceder a la tienda online simplemente escribiendo la dirección en el navegador (http://www.tu-dominio.com/tienda).

Ahí es cuando entra en juego el código que he mencionado antes y que nos permitirá solucionar este problema. Pero antes, deberás configurar el plugin para el formulario de acceso.

Configurar plugin Sidebar Login.

  1. Entra en «Apacienda > Widgets«.
  2. Busca el widget «Barra lateral de identificación» y añádela al sidebar en el que quieras que se muestre.
  3. Ahora configura los siguientes ajustes:
    • Título de desconexión. Es el título que se mostrará en el widget del formulario de acceso, puedes poner por ejemplo: «Acceder a la tienda«.
    • URL de redireccionamiento. Es la URL de la página a la que quieres que se redirija el usuario cuando se loguee. En este caso deberías poner la URL de la página de la tienda.
    • URL de redireccionamiento de desconexión. Tiene la misma función que la anterior, pero en este caso para cuando el usuario registrado cierre su sesión. Puedes poner cualquier URL diferente de la página de la tienda, por ejemplo: la URL de la home.

    El resto de campos los puedes dejar como vienen por defecto.
    Configurar formulario de acceso a tienda WooCommerce

  4. Para terminar, haz clic en «Guardar«.

Aquí puedes ver una captura de cómo quedaría el formulario de acceso a la tienda.

Login para tienda WooCommerce

Insertar código de control de acceso a la tienda WooCommerce.

Con los dos plugins que acabamos de instalar y configurar ya sería suficiente para restringir el acceso a cualquier página que hayas creado con WordPress.

Lo que ocurre es que las páginas que crea WooCommerce cuando se instala (las páginas de; Tienda, Carro, Mi cuenta y Finalizar compra ), no funcionan como una página normal de WordPress y por eso hace falta usar un código para que se puede bloquear el acceso también a la página de la tienda.

Sin embargo, antes de poder pegar el código, vas a necesitar hacer lo siguiente (CON EL NUEVO CÓDIGO NO ES NECESARIO SEGUIR LOS SIGUIENTES PASOS):

  1. Si no lo has hecho todavía, tendrás que crearte un tema hijo del tema que estés usando para tu tienda WooCommerce. Puedes ver cómo hacerlo en el siguiente vídeo. No te llevará más de 5 minutos.
  2. Crear una carpeta llamada «woocommerce» dentro de la carpeta del tema hijo que vayas a usar.
  3. Copiar el fichero «archive-product.php» que encontrarás dentro de la ruta «/wp-content/plugins/woocommerce/templates/» de tu instalación de WordPress y pégalo dentro de la carpeta «woocommerce» que has creado en el paso anterior.

Para poder hacer todo esto, yo te recomiendo usar un cliente FTP con el que puedas navegar por las diferentes carpetas de tu servidor, crear carpetas nuevas y copiar y pegar ficheros como si estuvieses en el escritorio de tu PC.

Una vez creado el tema hijo y pegado el fichero «archive-product.php» dentro de él, es el momento de insertar el código de control de acceso.

Basta con pegar el siguiente código al final del fichero functions.php de tu tema.

function visible_solo_usuarios_registrados(){

    if ( !is_user_logged_in() && (is_woocommerce() || is_cart() || is_checkout())) {

        wp_redirect( get_permalink( get_option( 'woocommerce_myaccount_page_id' ) ) );
        exit;
    }
}
add_action( 'template_redirect', 'visible_solo_usuarios_registrados' );

Para ello abre el fichero «archive-product.php» con cualquier editor (puedes hacerlo también desde el panel de administración en «Apariencia > Editor«) y pega el código anterior justo antes de la línea get_header( 'shop' ); ?>.

Para comprobar que todo funciona, cierra tu sesión y vuelve a cargar la web. Ahora no podrás ver el enlace a la página de la tienda desde el menú, ni tampoco acceder a ella aunque escribas la dirección en el navegador.

Obviamente, si vuelves a loguearte con tu usuario y contraseña, ya si podrás acceder a la página de tu tienda WooCommerce y efectuar una compra.

Reconozco que los últimos pasos para insertar el código, pueden parecer un poco complicados para aquellos que no hayan trabajado antes con un tema hijo, pero te puedo asegurar que es la forma más fácil que conozco de conseguir que sólo los usuarios registrados puedan acceder a tu tienda WooCommerce.

BONUS. Permitir el acceso a la tienda online solo a un determinado rol de usuario

Si lo que te interesa es limitar el acceso a cualquier sección de la tienda solo a un rol de usuario determinado, entonces en lugar de usar el código snippet anterior deberás usar este:


// Permitir acceso a tienda solo a un determinado rol de usuario
function visible_segun_rol_de_usuario(){

	$current_user = wp_get_current_user();
	$allowed_user_role = array( 'contributor' ); //Añade dentro de los paréntesis y separados por comas, los roles de usuario a los que desees permitir el acceso.
	if ( ( !in_array( $allowed_user_role, $current_user->roles ) ) &&
		( is_shop() || is_product_category() || is_product_tag() || is_wc_endpoint_url() || is_product() || is_cart() || is_checkout())) {

		wp_redirect( get_permalink( get_option( 'woocommerce_myaccount_page_id' ) ) );
		exit;
	}
}
add_action( 'template_redirect', 'visible_segun_rol_de_usuario' );

Una vez hayas añadido el código a tu tema, busca la línea «$allowed_user_role = ‘contributor’;» y reemplaza «contributor» por el ID del rol que te interese (por ejemplo, para el rol Suscriptor, el ID es «subscriber») 😉

117 comentarios en “Tienda WooCommerce sólo visible a usuarios registrados”

  1. Hola buen dia, tengo un problema que no he conseguido la solución, cuando el cliente se registra ingrsa a la pagina mi cuenta si quiere ver un pedido, cambiar contraseña, editar dirección etc, no hace nada se queda alli mismo en la página mi cuenta.. revise si tenia algún enlace roto y esta bien, revise la caché y esta bien, elimine la pagina mi cuenta y la cree nuevamente y sigue igual.. Cualquier ayuda o solución que me puedan brindar se los agradeceria

  2. Hola Antonio
    Tengo el siguiente problema, woocommerce no me muestra los productos si no estas logueada, puede ser un problema de roles ?, pero no tengo ningún plugin de roles instalado. Gracias de antemano.

  3. Hola, he seguido todos los pasos, pero luego que me logueeo con un usuario, no sale de la pagina «mi cuenta» y no puedo hacer nada mas… tampoco se muestran mis productos.

  4. Hola Antonio
    Gracias por este tutotial
    Necesito consejo de un experto como tú
    Como lo debo hacer yo para que en mi woocommerce, el invitado o Guest peuda comprar normal sin registrarse ni nada, y el Rol de Socio puedan entrar logueandose para comprar porque tiene un precio mas economico.
    EStoy un poco verde en woocommerce.
    O si sabes un tutorial bueno que me puedas aconsejar
    Un saludo
    Y muchas gracias
    Enrique

  5. Buen día, tengo un problema al que le he visto poco o nada de solución. ¿Cómo hago para restringirle el acceso a usuarios que quieran registrarse de manera que llenen el formulario con sus datos y yo crearles su usuario y contraseña. Saludos !

  6. Hola buen día, veo excelente el artículo pero tengo una necesidad que poco he visto… requieren restricción por categoría dentro de la tienda, que los usuarios soliciten acceso a ciertas categorías y previa autorización, el usuario pueda tener acceso solo a esas categorías… saludos y gracias por compartir el conocimiento

        1. Que tal Antonio, tengo una pregunta existe un plugin alternativo que me apoye a limitar el monto máximo de compra por usuario; aun cuando se tienen 100 usuarios y cada uno tenga un limite personalizable

  7. Hola Antonio, excelente información como siempre, quizás me puedas ayudar con alguna recomendación en el problema que estoy teniendo

    Estoy implementando en mi WEB la venta de productos a través de woocommerce, todo marcha bien; Al seleccionar el producto>pasar al carrito>, pero al finalizar la compra me gustaría que solo puedan hacerlo usuarios que tengan una CUENTA REGISTRADA, previa confirmación del correo, que sean cuentas reales.
    Woocommerce, me permite el registro de correo y contraseña de algún usuario, pero de igual manera si NO llena ese campo sigue haciendo pedidos ….

    Ya que he realizado pruebas donde he registrado correos y usuarios ficticios como invitado y de igual manera se genera el pedido, por lo que generaría un caos en mi tienda, ya que cualquier persona podría crear una orden de compra, sin ser verdaderamente una compra real.

    Espero puedas recomendarme algo.

    1. Hola Xavier!

      Lo que se me ocurre que puedes hacer es redirigir a la página de registro a todas aquellas personas que intenten acceder a la página de pago sin estar logueados.

      Lo podrías hacer con cualquier plugin gratuito de bloqueo de contenidos para usuarios no registrados.

      Saludos!

  8. Antonio, te envío un cordial saludo, pregunta, además de la restricción con los usuarios registrados, también será posible restringirlo por rol, y de ser así, ¿Cuál es la mejor forma de hacerlo?, please heeaaalp!!

  9. Hola buenos días
    Yo para esa función, que no sé si más cómoda pero considero que es más bonita visualmente hablando, uso el plugin Restrict Content Pro, por si a alguien le sirve de ayuda
    Gracias

    1. Hola!

      Restrict Content Pro es una maravilla, pero ya estamos hablando de una solución completa para membership sites. Es decir, que si solo lo vas a usar para ocultar productos, no creo que te merezca la pena la inversión teniendo en cuenta que se trata de un plugin de pago y no es barato precisamente.

      Otra cosa bien distinta es que también lo vayas a usar para montarte una membresía, entonces si que este plugin es una solución muy buena.

      Saludos!

  10. Hola,
    El plugin side bar login hace dos años que no se actualiza. ¿Seria seguro seguir con las indicaciones que nos da o hoy en dia existe algun plugin nuevo que facilite el acceso privado a la tienda wooocomerce?
    Gracias

    1. Hola Mar!

      Este post se publicó hace ya mucho tiempo y aunque el plugin lleve mucho tiempo sin actualizarse, es tan simple que prácticamente no requiere mantenimiento ni actualizaciones. Sigue siendo compatible con la última versión de WP y de hecho, tiene valoraciones de 5 estrellas de hace algunos meses, lo cual quiere decir que la gente lo sigue usando.

      Saludos!

  11. Buenas Antonio!!

    Estoy siguiendo tu guia, me parece muy util, pero no veo restricciones de acceso en la pagina tienda. Me podrias ayudar. Gracias

  12. Excelente artículo me ayudó a un trabajo, pero tengo un problema. Si el cliente que no está logueado realiza un Archivo de un producto, se visualiza el mismo, como impedir eso?

  13. Hola Antonio,

    Muy bueno tu post. Hace rato vengo buscando esto.
    Aún tengo un problema, una vez que entro con usuario y contraseña me redirige a la página my account, y yo necesito que vaya directo a la tienda.
    Usé sólo el plugin side bar login
    ¿Hay alguna forma de hacer eso?

    Muchas gracias

  14. Hola, muy buen post, pero al tener el woocommerce solo para usuarios registrados, si yo pido al usuario iniciar sesión para terminar la compra, tendría que logearse 2 veces?

  15. consulta, e cambiado a Divi, y ahora intento pegar el shortcode para que no ingrese a la tienda de woocommerce, y resulta que ingresa de todos modos! Ayuda gracias!

  16. Hola, yo lo que necesito es que las personas que visten mi web vean la tienda y los productos con los precios pero que no puedan añadir productos al carrito si no crean antes una cuenta. ¿Esto es posible?

    1. Hola Catalina,

      Con WooCommerce Hacks puedes conseguir eso de forma muy sencilla y más de 50 funciones avanzadas para tu tienda. Echa un vistazo aquí.

      Saludos!

  17. Hola, gracias por compartir, una pregunta, como puedo crear un plugin que agregue esta función o código? Me gustaría poder tenerlo pero como plugin que lo active o desactive según lo necesite y no tener que entrar a agregar o borrar el código.

    Saludos

  18. Jesus Manuel Arroyo Sobrino

    El código de abajo para que la tienda solo sea visible para un usuario funciona genial, es lo que buscaba, muchísimas gracias. Sólo una pregunta, hay alguna forma de que sea visible para dos roles??

    1. Jesus yo tb lo necesitaba y es este:

      // Permitir acceso a tienda solo a un determinado rol de usuario
      function visible_segun_rol_de_usuario(){

      $current_user = wp_get_current_user();
      if (
      (!( (in_array( ‘subscriber’, $current_user->roles ))
      || (in_array( ‘administrator’, $current_user->roles )) ))
      && ( is_shop() || is_product_category() || is_product_tag() || is_wc_endpoint_url() || is_product() || is_cart() || is_checkout())) {

      wp_redirect( get_permalink( get_option( ‘woocommerce_myaccount_page_id’ ) ) );
      exit;
      }
      }
      add_action( ‘template_redirect’, ‘visible_segun_rol_de_usuario’ );

  19. hola antonio facilitanos la vida y preparete un video con esta explicación te lo agradeceriamos infinitamente pero el articulo me ha parecido exepcional me encanta espero probrarlo pronto en una tienda de un cliente que sus usuarios son mayoristas y solo a ellos quiere darles el acceso te encargo el video si puedes y un fuerte abrazo

  20. Hola Antonio,

    En primer lugar quiero felicitarte y agradecer por tus aportes.
    Te comento que tus pasos me han funcionado perfectamente aplicándolos en el theme Jupiter 5. Lamentablemente han realizado una nueva actualización modificando la estructura del functions.php y ahora, cuando realizo la incrustación del código, se cuelga con el error ERR_TOO_MANY_REDIRECTS.

    Te agradecería si me indicas una alternativa para resolver el inconveniente.

  21. Hola.
    No logro entender como administrar las contraseñas y usuarios para entregárselos a nuestros clientes. No logro verlo en el escritorio de wordpress. Gracias!!

    1. Hola Daniel,

      En realidad tú no tienes que hacer nada. Cuando los visitantes se registran como clientes, WC les envía automáticamente un email con los datos de acceso.

      Si necesitases reenviar una contraseña a un usuario, podrás hacerlo entrando en su perfil de usuario desde el administrador de WP y clicando en «Generar contraseña».

      Saludos!

    1. Hola Jos,

      Simplemente desmarca la opción «Permitir finalizar compra como invitado» que verás en «WooCommerce > Ajustes > Finalizar compra > Proceso de finalizar compra».

      Saludos!

  22. Gracias por el artículo, pero ¿cómo hago para que sólo puedan entrar usuarios registrados con un determinado perfil? por ejemplo, «colaborador». Los otros perfiles registrados no pueden. Muchas gracias!!!

  23. Hola Antonio!! muy bueno tu blog!
    Necesito crear usuarios de mi tienda woocommerce que tengan limitado lo que puedan gastar? Ejemplo:
    Usuario 1 : solo puede gastar $20000
    Usuario 2: solo puede gastar $10000

    Se puede hacer esto?
    Muchas gracias de antemano!

  24. Hola, muy útil tu aporte, muchas gracias. Tengo un inconveniente por falta de conocimiento, a ver si me colaboras cómo orientarme para buscar solución. Estoy la tienda, ya tengo producto y todo, la puse en modo mantenimiento con el plugin all-in-one-wp- que siempre uso, y estendo el front de sitio en mantenimiento generalmente podía entrar y seguir haciendo ajustes desde una página donde me permitía tener un formulario de login, pero con el woocommerce instalado tengo un lio con los usuarios, porque en modo mantenimiento llamo la página para entrar como administrador y no me deja entrar. Entonces me surge la pregunta: como se apodera woocommerce de los registros de usuarios de wordpress? como separa los roles (porque las propiedades de rol y configuración de usuarios se me han extraviado, y si quiero editar un usuario me lleva a la página de la cuenta del usuario en woocommerce; y si invoco el wp-admin.php tampoco me deja loguear para entrar como administrador…. que locura…
    Quisiera poder poner el sitio en mantenimiento pero entrar como administrador y seguir haciendo ajustes; he visto plugins de edición de roles, pero no sé si sean recomendables, o haya alguna otra forma de poder hacer lo que necesito. Te quedaría muy agradecida.

    1. Hola Angélica,

      Si estás logueada como administrador, te debería dejar entrar a través de /wp-admin/ sin problemas aunque te loguees con el formulario de cuenta de cliente de WooCommerce.

      Si no te deja acceder al panel de admin de WP, no es por WooCommerce, será por otro plugin que tengas instalado o porque estés logueada con otro rol de usuario que no sea administrador.

      Te recomiendo que desactives todos los plugins excepto WC. Puedes hacerlo desde FTP eliminando las carpetas de los plugins instalados. MUY IMPORTANTE – Antes de nada, haz una copia de seguridad.

      Saludos!

  25. Muchas gracias por tu post!!, gran descubrimiento tu blog!!, me pasa como a otros lectores de los que he leido sus respuestas, necesito autorizar a los usuarios registrados, por lo que entiendo debo hacerlo usando, además del sidebar login, el pluging de Groups, ¿correcto?.
    Gracias por tu ayuda, y te comparto en facebook

  26. Hola Antonio! Tengo una web en la que, mediante dynamic pricing y diferentes roles, tengo precios distintos para distribuidores o clientes finales. El caso es que todo esto me está ralentizando la web un montón. Los distribuidores tardan un siglo en añadir un producto al carrito…
    Estoy pensando abrir una web nueva a parte para distribuidores, pero entonces me gustaría que fuera totalmente privada y que google no la motrara en las búsquedas, eso se puede hacer?
    Gracias!

  27. Antonio, gracias por toda tu ayuda, necesito me orientes, tengo un sitio de ventas de cursos online con woocommerce, los cursos los vendo como productos, utilizo plugin sensei, tambien woocommerce membership y suscriptions, ya lo tengo todo configurado y finciona perfectamente pero tengo un problema, que estoy intentando limitar la cantidad de vecez que un usuario compra el curso, osea si ya lo pago y esta regustrado con una membresia que cuando vaya a la tienda o no se visualice el curso que ya compro pq ademas lo tiene visible en un enlace de mis cursos donde se muestra el progreso…o en caso de mostrarlo en la tienda como producto que cuando intente comprarlo nuevamente le avise que ya ese articulo lo compro o simplemente que no le aparezca el botol de agregar al carrito….en este momento el usuario aunque este registrado puede comprar el curso X vecez cosa que no tiene sentido. gracias por tus consejos.

  28. Hola. Antes de todo enhorabuena por tu blog. Estoy creando una tienda con woocommerce y hay un apartado que me trae de cabeza. Es una especie de editorial, donde los autores podrán registrarse para seguir sus productos, únicamente seguirlos para ver sus ventas, …, ellos no venderán, por lo que el multi vendor no serviría en este caso.
    Cómo puedo hacer para que un usuario se registre y acceda únicamente a sus productos?. Habría que poner alguna etiqueta a los productos, algún rol al usuario?.
    Ayúdame, por fa, estoy algo perdida.
    Gracias

    1. Hola María José,

      La verdad es que no conozco ningún plugin que permita hacer eso. Puedes dar acceso a otros usuarios para que vean los informes de WooCommerce, pero verían las ventas de toda la tienda.

      Estoy casi convencido que tu solución pasaría por un plugin a medida :-/

      Siento no poder ayudarte con eso.

      Ni que decir tiene, que si encuentras un plugin que lo haga, no dudes en compartirlo en los comentarios.

      Saludos!

  29. Hola, estoy leyendo tu artículo, por cierto muy interesante y me surgen varias dudas.
    Como alguien ha comentado antes, yo queria que en mi web se pudiera vender tanto a personas físicas como a profesionales, me dedico a la venta al mayor y menor, pero de momento creo que voy a desestimar esta opción y, voy a hacer la web para vender sólo a profesionales ya que no entiendo muy bien cómo hacerlo.
    Pero lo que sí necesito es que el usuario se registre y además envíe una documentación por correo, fax o correo-e,
    Pero cómo haría para cuando la persona se registre, sea yo la que le de el usuario y contraseña? Sólo con registrarse no es suficiente, debo revisar antes la documentación que me envía. Puedes ayudarme?

  30. No entiendo bien el procedimiento: hay que instalar groups+sidebar login? o solo este ultimo?
    Instalando sidebar login y poniendo en el theme child el codigo correspondiente lo que pasa es que cualquier pueda ver el catalogo de productos y precios, pero solo al pinchar un producto para comprar es cuando te sale el registro de cuenta. ¿Que debo hacer para que directamente la pagina de «shop» sea la que este restringida a usuarios registrados aprobados por mi? Gracias

  31. hola he seguido tu tutorial paso a paso,una pregunta si quiero que el registro,no sea en el apartado de supcriptor ect si no que cuando quiera darme de alta me lleve a un formulario ,ya decido yo darlo de alta y contraseña como control,como puedo hacerlo para que vaya a dicho formulario.gracias,por otro lado por que viene tachado lo del tema hijo,¿No es necesario?

  32. Hola Antonio. Gracias a Woodemia salgo de problemas con frecuencia, creo que mas del 90% de soluciones, de una forma u otra las encuentro gracias a Woodemia.
    Mira, lo que quiero lograr es algo parecido a lo del post: lo que estoy diseñando es una multitienda, pero quiero ofrecer productos a una categoría particular de usuarios registrados (los vendedores) y ocultar estos productos del resto. Esto quiero hacerlo en una página que creé sólo para estos productos y que no está visible en el frente del sitio. Hacer que aparezcan sólo en esa página se arregla con un shortcode, pero no sé cómo hacer (por el camino fácil) para que sólo una categoría de usuarios pueda ver esos productos, y estén ocultos de la búsqueda y el catálogo para los demás usuarios. Si hay que editar código no hay problema con encontrar los archivos y líneas, pero no sé qué es lo que debería cambiar ¿Puedes ayudarme?
    ¡Saludos!

    1. Hola Fer,

      La respuesta a tu problema se llama «Catalog Visibility Options» 😉

      Puedes encontrar este plugin en la página oficial de WooThemes.

      Saludos!

  33. Buenas! tengo un problema… Ya tengo en mi web el acceso restringido a las personas que no están registradas, hasta el momento perfecto. El problema es que cualquier persona que ser registre puede comprar en mi tienda,y sólo quiero que me compren profesionales del sector,no particulares.¿Qué puedo hacer?Gracias de antemano!!!!! Saludos

  34. Hola, tengo un problema, necesito tener 3 almacenes diferentes para control de stock de 3 almacenes físicos de 3 ciudades.¿conoceis algún pluin que permita hacer esto?

    Muchas gracias

  35. Hola.
    Me estaba volviendo loco… hasta que he visto que aquí sale igual. En el formulario en lugar de poner la palabra nombre, dice nome. Sabes como o donde cambiarlo? No lo he conseguido encontrar. Por lo demás me funciona perfecto.
    Gracias
    Un saludo

  36. hola, tengo una duda me estoy iniciando en el mundo de woocommerce, quisiera saber que plugin se debe usar para el registro de usuarios y cuando el usuario se registre le salga un historial de sus compras y carrito de compra o en tal caso algo como lista de articulos tildados como lista de deseos?

  37. Hola Antonio, yo estoy inscrito en tus comuniad privada porque me ha gustado mucho tu web y lo he recomendado a varios de mis conocidos en el área.
    Me ha interesado crear a futuro un par de sitios con Woocommerce dónde los usuarios accesen a ambos, por estar relacionados, pero creo que se va a complicar mucho manejar mas de un sitios (o varios sitios).
    Crees que si un usuario se registra en uno de los sitios, en automático se registre en el segundo o los demás?. Supongamos que tengo 2 (sitios) instalaciones de WP Woocommerce en un mismo Hosting/dominio (porque cada WP tiene su propio objetivo/tema) crees que exista un plugin que cuando un usuario se registre en alguno de los sitios de WP (del mismo o diferente dominio/hosting ) en automático también se registre en los demás sitios WP o algo similar?. Agradecería mucho tu opinión. Saludos.

    1. Hola Carlos,

      En tu caso creo que la mejor solución es que te instales WordPress en modo multisitio y después configures cada tienda con un dominio diferente y un WooCommerce diferente, pero todo desde un único panel de WordPress.

      Si no recuerdo mal, esto soluciona también el problema de los usuarios, ya que tendrás acceso a todos ellos (los de ambas tiendas) desde el mismo panel de administración.

      Espero que te sirva.

      Un saludo!

    1. Hola Angela,

      Si te fijas, indico que ya no es necesario usar el plugin groups. Basta con instalar el plugin Sidebar Login y pegar el código en el fichero functions.php

      De todas formas no sé por qué motivo no puedes acceder al panel de administración. Te recomiendo que elimines (vía FTP) los 2 plugins instalados y vuelvas a intentar acceder.

      Espero que lo soluciones pronto.

      Saludos!

  38. Hola tengo una duda he seguido los pasos y todo me funciono a la perfección pero no logro darme cuenta como puedo hacer para que algunas paginas o post me aparezcan privados también hay alguna solución ? Desde ya mil gracias!!

  39. buenas tardes amigo que plugins hay disponible para que woocommerce me permita colocar la opcion de que otros usuarios puedan registarse y asi puedan vender productos tipo mercadolibre que plugins hay ??

  40. Hola! gracias por tus datos!

    Soy muy nueva en todo este sistema de wordpress y sobretodo en woocommerce, intente hacer lo que has explicado, mas, creo que me he equivocado. Ahora mi pagina se ve en blanco y realmente no funciona, ni siquiera puedo ingresar al escritorio de wordpress. En verdad agradeceria muchisimo tu ayuda, porque estoy al borde de un colapso nervioso.

    Gracias!!!!!!!

  41. Hola Antonio, estoy aprendiendo y dándole forma a mi tienda usando tus tutoriales.
    Lo que a mí me gustaría es que en la zona de registro de la página «Mi cuenta» de woocommerce poner un nuevo campo de confirmación de contraseña.
    Llevo un par de días buscando info y no encuentro una explicación de cómo hacerlo.
    Gracias de antemano.
    Y felicitaciones por lo el blog que es claro y totalmente comprensible una maravilla.

  42. Hola buenas tardes, gracias de antemano por este gran tutorial que nos ayuda a todos.
    Me funciona a la perfección.

    Podrias decirme si se puede insertar en ese codigo algo para ocultar tambien el carro a usuarios no registrados?

    Gracias

  43. Hola Antonio, he realizado los pasos que describes instalando un solo plugin y funciona.
    Dices que despues de pegar el codigo y realizar los pasos el enlace del menu tienda no se visualiza pero en mi caso si se visualiza aunque si hago clic me indica que me registre. Con lo cual me vale el tutorial. (algo habre hecho mal porque ahora tengo en la barra lateral el registro nuevo y en la pagina el registro por defecto de woocommerce…)

    El problema que veo es que cualquiera puede registrarse y entrar en la tienda con lo que no veo la utilidad de hacer esto.

    Hay que usar entonces el segundo plugin para que funcione realmente?

    Ante todo gracias por mostrar tus conocimientos para todos

  44. Hola,

    Tengo un caso especial. Una pequeña empresa unipersonal quiere tener un sistema de compra sencillo, pero solo para recibir los pedidos de sus clientes mayoristas, no venta público. Luego envía la factura con el descuento que corresponda y le pagan por transferencia. Es decir quiere evitar todo el tema de pagos on-line, solo recibir los pedidos. Tiene el catálogo en Joomla-Zoo.
    ¿Se puede hacer con Woocomerce o me recomiendas otro sistema aprovechando lo que tiene en Joomla?. Lo más aproximado que he visto en los e-commerce sería el pago mediante transferencia bancaria, pero es que eso es lo que se quiere evitar, el pago.

    Gracias

    1. Hola Jose,

      Se puede hacer perfectamente usando la opción de pago en entrega o la de pago por transferencia. De esta forma el cliente mayorista puede realizar su pedido sin que tenga que hacer el pago en la web. Y ya el propietario de la tienda, podrá enviar el pedido con la factura y finalmente el cliente mayorista le hace una transferencia cuando lo reciba.

      Espero haberte aclarado la duda.

      Saludos!

  45. Hola Antonio, interesantes tus post! Te felicito porque siempre acabo aquí buscando lo que necesito 😉

    Tengo una duda que quizás me podrías resolver:

    Necesito crear una tienda en woocommerce para 3 tipos de usuarios: usuario normal, empresa y distribuidor. El tema está en que el usuario normal entraría a la tienda en abierto, con precios PVP y los otros dos a una zona de acceso restringida con los mismos productos pero con precios diferentes.

    ¿Sabes cómo se podría hacer esto en Woocommerce?¿Quizás con variaciones de producto asignadas a cada uno de los roles?

    Gracias, un saludo 🙂

  46. Hola Antonio

    Es un artículo genial. He seguido todos los pasos y creado el grupo para usuarios registrados, junto con el widget del sidebar. Todo parece funcionar, hasta que añado el código a functions.php

    Pero me da el mismo problema que leí algún comentario más arriba: bucle infinito y se me cuelga la página (TOO MANY REDIRECTIONS).

    ¿A qué puede deberse?

    Muchas gracias!!

  47. Hola, mi duda es parecida pero mas sencilla, ¿es posible no mostrar el precio de los articulos si no estas registrado? y una vez registrado, ¿es posible mostrar diferentes precios (descuentos) dependiendo del rol asignado?

    Un saludo

  48. Antes que nada, mil gracias por la ayuda, me ha salvado del colapso nervioso 🙂

    Sólo apuntar que el código que hay en el post no me ha funcionado, me daba error de redirecciones en loop. Me ha funcionado con el código que ha publicado David. Así que gracias a los dos!!!

    1. Hola Victor,

      Hace poco actualicé el código del post corrigiendo el error de loop de redirecciones y funcionaba.

      Es posible que hayas copiado la antigua versión del código, guardada en caché :-/

      En cualquier caso, me alegra que te haya servido.

      Saludos!

  49. En primer lugar, muchas gracias por la info, me está siendo muy útil. Lo único que no consigo solventar, una vez que he seguido todos los pasos, es que una vez que copio/pego el código en el fichero de funciones del tema, no para de hacer bucles infinitos y se cuelga la web. Da igual que acceda a la página de home o a una de la tienda, se cuelga con el error ERR_TOO_MANY_REDIRECTS.

    Te agradecería me indicaras dónde he fallado al seguir los pasos.

    Gracias,

    JM

      1. Buenas noches Antonio, excelente blog, de gran ayuda!

        Al pegar el código en functions.php la página entera se cuelga con el error
        ERR_TOO_MANY_REDIRECTS. Comentas que puede que el código esté obsoleto, cual es el bueno?

        Gracias!

  50. Hola

    Una cosa que no tiene mucho que ver con el post

    Tengo un WordPress y quiero poner eso que tienes tu de:

    Recibir un email con los siguientes comentarios a esta entrada.

    Recibir un email con cada nueva entrada

    Como se hace eso? Es con un plugin? Es nativo de wordpress??

  51. Saludos muy buen aporte, una pregunta mi caso lo que quiero hacer es que los usuarios puedan registrarse en la tienda y publicar sus productos en uan categoria especifica es posible esto con woocommerce si tienes alguna opcion te lo agradeceria

    1. Hola Leo,

      Se pueden crear usuarios con el perfil de «Shop Manager» para que puedan subir sus propios productos a la tienda, pero podrán hacerlo en cualquier categoría.

      Otra opción sería usar un plugin -como por ejemplo, el plugin Groups- para limitar las capacidades del rol de usuario «Shop Manager«.

      Un saludo!

  52. Buenas, primero felicitarte por la web

    Estoy utilizando esta información para la web que estoy desarrollando, tengo en un ítem del menú «área de clientes» donde se hace el login, al hacerlo te lleva a otro ítem del menú, este es el que esta visible solo para usuarios registrados. Pero, ¿puedo ocultar el ítem «área de clientes» para usuarios registrados?

    Espero que me podáis ayudar, un saludo

    1. Hola David,

      Lo que explico en esta entrada es sólo para ocultar secciones de la web a clientes sin registrar. No sirve para ocultar elementos del menú.

      En realidad, lo que preguntas no tiene relación con lo que explico en el post. La respuesta daría para escribir otro artículo aparte :-/

      Siento no poder ayudarte en eso.

      Un saludo.

  53. Hola

    Yo tengo dos problemas. Aunque hago lo del tema hijo y lo de insertar el código me sigue dejando entrar a la tienda sin estar registrado por URL

    Por otro lado. Si hacemos esto, necesitamos usuarios registrados, pero el «sidebar login» es de registro. Si habilitas en opciones generales «cualquiera puede registrarse», da la opción de registro el formulario, pero lleva al usuario al back end y eso no es lo que queremos.
    En resumen, una vez hecho el método para que la tienda sólo esté disponible para usuarios registrados, como hacemos para que los usuarios se registren en la misma??

    Gracias!!!!

  54. Hola Antonio,
    como siempre agradecido de la información que nos ofreces en el blog.

    Tengo un problema que por más que busco no consigo encontrar la solución.
    Estoy configurando una tienda con woocommerce en la que se venden bebidas alcohólicas. Me gustaría que cuando se accede a esta categoría apareciera un control de verificación de edad. He visto que hay varios plugins pero ninguno se puede asociar a la categoría de woocommerce.

    ¿Sabes si hay alguno que funcione bien?

    Un saludo y gracias!

    1. Hola Frank,

      Los plugins que conozco tampoco te permiten verificar la edad sólo para determinadas categorías, sino que lo hacen para toda la tienda.

      Creo que en tu caso vas a tener que desarrollar un plugin a medida que te permita seleccionar las categorías de productos a las que deseas hacer la verificación.

      Siento no poder ayudarte en eso.

      Un saludo!

  55. Hola Antonio,

    No sería más fácil que explicases cómo funciona este snippet ? Con él haces que al entrar en cualquier página de WooCommerce te redirija a la de Mi Cuenta por ejemplo para que se identifiquen.

    function wpse_131562_redirect() {
        if ( !is_user_logged_in() && (is_woocommerce() || is_cart() || is_checkout())) {
            wp_redirect( get_permalink( 7 ));
            exit;
        }
    }
    add_action( 'template_redirect', 'wpse_131562_redirect' );
    

    Espero que sirva,
    Saludos

    1. ¡Muy buen aporte David! Efectivamente tu código es más sencillo y también funciona a la perfección.

      Mi «fallo» ha sido no haber caído antes en usar el hook para la acción «template_redirect«. Con eso evito tener que crear una copia del fichero «archive-product.php«.

      Voy a actualizar el la entrada añadiendo tu código. Aunque lo voy a modificar ligeramente para poder aprovechar los grupos de usuarios del plugin Groups.

      Muchas gracias de nuevo David.

      Un saludo!

      1. realice los pasos como lo indicas, copio el código de david en las funciones del tema, y aun cuando colocas el

        www.tu-dominio.com/tienda

        me dirige a la tienda, como puedo solventar el caso o existe otra forma de restringir esa área solo para los usuarios

    2. Hola David

      Entonces con ese código sólamente podemos conseguir lo que queremos, que es que sólo usuarios registrados accedan a la tienda??

      O hace falta algo de lo que Antonio ha incluido en su post??

      Gracias

  56. Hola! Todos tus post son de mucha ayuda, he intentado hacer lo de éste artículo, pero al crear el «child theme» me crea un error en el menú de la página… puedo pegar el código directamente sin generar el «child» de mi tema!? 😀

    Saludossss!

    y Gracias por todas tus aportaciones! 😀

    1. Hola Benazir,

      Personalmente no te lo recomiendo. El usar un tema hijo es precisamente para evitar tocar el código fuente del tema padre original y así conservar los cambios cuando lo actualices.

      Probablemente hayas fallado en alguno de los pasos que explico y por eso te muestra el error del menú. Revisa todos los pasos con tranquilidad y vuelve a probarlo.

      Un saludo.

  57. Saludos, me gusto mucho este articulo, lo comparti en face para ayudarte. Como podria hacer para cuando el usuario no registrado llegue al enlace que necesita estar registrado le mande a la url de de darse de alta?? para que se registre en vez de solo bloquear el enlace.

    1. Hola Michael,

      Técnicamente no se pueden crear dos tiendas WooCommerce diferentes en un único sitio WordPress.

      Sin embargo, si que puedes usar este tutorial para aplicarlo a una nueva página de productos exclusivos para profesionales. Es decir, tendrías que crearte una nueva página -llamada, por ejemplo; «Tienda para profesionales»- y con los shortcodes de WooCommerce, mostrar en ella los productos para profesionales.

      Después, restringe el acceso a esta página sólo a los usuarios con perfil profesional y haz lo mismo en todas las páginas de productos exclusivos para profesionales.

      A efectos del visitante, parecerán dos tiendas online diferentes, pero internamente una será la página de tienda por defecto de WooCommerce y la otra será una página normal de WordPress con un catálogo de productos exclusivo para un tipo de usuario.

      Además, para este caso concreto no necesitarías usar el código que explico al final del artículo.

      Espero haberte ayudado.

      Un saludo!

  58. oops… hace poco te felicité por tu página, pero esto de capar partes obligando a compartir en RRSS no está tan bonito… entiendo el objetivo, pero no es muy «estético».

    1. Hola Nacho,

      Sólo he bloqueado parte del contenido en 2 artículos de los casi 50 que ya hay publicados.

      Artículos a los que les he dedicado muchísimas horas y con información por la que muchas personas estarían dispuestas a pagar, pero que yo he decidido hacer pública y accesible a cualquiera.

      A cambio sólo pido que se compartan en redes sociales para darle mayor difusión y alcance y así conseguir que la comunidad de Woodemia crezca.

      Creo que es un trato BASTANTE JUSTO, pero si tú no lo ves así, pues no compartas y listo.

      Desde luego no te voy a guardar rencor por eso, sólo pido un poco de colaboración.

      Un saludo. Y espero seguir viéndote por aquí.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Responsable: Antonio Cantero, siendo la Finalidad; envío de mis publicaciones así como correos comerciales. La Legitimación; es gracias a tu consentimiento. Destinatarios: tus datos se encuentran alojados en mi plataforma de email marketing Active Campaign ubicada en EEUU y acogida al Privacy Shield. Podrás ejercer Tus Derechos de Acceso, Rectificación, Limitación o Suprimir tus datos en contacto@woodemia.com

Scroll al inicio