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.
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.
La entrada Mostrar contenido solo a usuarios que compraron un producto en WooCommerce es un artículo reciente del sitio DecodeCMS.
0 Commentaires