• Saltar a la navegación principal
  • Saltar al contenido principal
  • Saltar a la barra lateral principal

DecodeCMS

Tu WordPress a otro Nivel ...

  • Acerca de
  • Contacto
  • Inicio
  • Tutoriales
    • Themes
    • Plugins
    • Core
    • Recursos
  • Cursos
  • Acceder
    • Mis cursos
    • Mi Cuenta
    • Acceder
Inicio / Tutoriales / Plugins / Mostrar contenido solo a usuarios que compraron un producto en WooCommerce

Mostrar contenido solo a usuarios que compraron un producto en WooCommerce

[ 5 diciembre 2023 ] [ Autor: Jhon Marreros Guzmán ][ Plugins - Intermedio] [ ]

funcionalidad woocommerce

Suscríbete a DecodeCMS:  

Recientemente en un proyecto se necesitaba que cierta contenido de una web sólo sea accesible para usuarios que compraron un determinado producto, al ser un requerimiento específico se puede solucionar a través de código.

 

Generalidades

El contenido que queremos restringir puede ser una o varias páginas y sólo serán accesibles si se compró un determinado producto, si el usuario no esta registrado o no ha comprado el producto entonces se redireccionará a la página de producto.

 

Código para mostrar una página sólo a usuarios que compraron un determinado producto

En el siguiente código debes cambiar los valores de la variable $id_pages e $id_product, puedes agregar más de un ID de página o entrada.

Puedes agregar el siguiente código como parte del archivo functions.php de tu tema hijo o usando algún plugin de Snippets.
add_action('template_redirect', 'dmcs_validate_show_page' );

function dmcs_validate_show_page():void{
	global $post;

	$id_pages = [ 2724 ]; // IDs de las páginas que se quiere restringir
	$id_product = 2704; // ID del producto que se debe comprar para ver las páginas


	if ( ! $post || ! in_array( $post->ID, $id_pages, true ) ) {
		return;
	}

	$product_url = get_permalink( $id_product );
	if ( ! is_user_logged_in() ) {
		wp_redirect($product_url);
	}

	$user = wp_get_current_user();
	if ( ! wc_customer_bought_product( $user->user_email, $user->ID, $id_product ) ) {
		wp_redirect($product_url);
	}
}

 
En el código anterior:

  • Usamos el Hook template_redirect que hace referencia a la función dmcs_validate_show_page
  • Dentro de la función definimos las páginas que serán restringidas y el id del producto que debe comprarse para verlas
  • Definimos la variable global $post, que nos permitirá comprobar si estoy en una determinada página
  • Comprobamos si el usuarios esta registrado, sino lo redireccionamos a la página de producto
  • Con la función wc_customer_bought_product comprobamos si el usuario compró el producto, sino lo redireccionamos a la página de producto

 

Conclusión

Como has podido comprobar, puedes restringir cierto contenido de tu sitio web para usuarios que adquirieron un determinado producto directamente a través de código tal como hemos visto en este artículo.

 

¿Me ayudas a llegar a más gente?

Twittear Compartir LinkedIn WhatsApp

Artículos Relacionados

  • Deshabilitar métodos de pago en WooCommerce según el total de pedidoDeshabilitar métodos de pago en WooCommerce según el total de pedido
  • Eliminar automáticamente las imágenes al borrar un producto de WooCommerceEliminar automáticamente las imágenes al borrar un producto de WooCommerce
  • Crear productos por programación en WooCommerceCrear productos por programación en WooCommerce
  • Sincronizar WooCommerce y Google SheetsSincronizar WooCommerce y Google Sheets
Valora este artículo : 1 barra2 barras3 barras4 barras5 barras (1 votos, promedio: 5,00 de 5)
Cargando...

Interacciones con los lectores

Comentarios

  1. Iván

    12 junio, 2024

    ¡Hola!

    Estoy probando el código y para un producto y página me sirve.

    ¿No hay manera de poder hacerlo con diferentes productos y diferentes páginas?

    Tengo diferentes páginas con un vídeo que no quiero que puedan verlo si no compran el propio producto correspondiente en Woocommerce.

    Página con vídeo A -> Producto A
    Página con vídeo B -> Producto B
    Etc.

    Me da fallo en la función dmcs_validate_show_page.

    Gracias.

    • Jhon Marreros Guzmán

      18 junio, 2024

      Hola, te da error porque no puede haber dos funciones con el mismo nombre, prueba cambiar el nombre de la función para tu video B y producto B
      Por ejemplo: dmcs_validate_show_page_b, no olvides cambiarlo tanto en la referencia del hook como en el nombre de la función.

Para escribir código envolver con: <pre class="language-xxx"><code> </code></pre> ,reemplaza las xxx (php, css, html)

*

* Gravatar habilitado

Barra lateral principal

Curso Decodifica WordPress

Únete a DecodeCMS

Recibirás como regalo:

Guia práctica con video:
¿Quieres agregar código a WordPress? Revisa las diferentes opciones que tienes.Ver más

Omnisend
Alojamiento Wordpress

Niveles

Básico Intermedio Avanzado

Etiquetas

accesibilidad css dashboard editor error funcionalidad herramientas imagen js librería mejoras optimización seguridad SEO social woocommerce

Populares

Usar Firebug para modificar un theme WordPress

Mostrar el stock en la lista de productos de WooCommerce

Personalizar el mantenimiento programado de WordPress

Cambiar la caja de cantidad a una lista desplegable en WooCommerce

© logo decode pie
Política de Privacidad | Política de devoluciones
Copyrigth 2026 Todos los derechos reservados