Si has seguido los artículos anteriores sobre como crear una Zona Privada por Usuarios o por Roles, sabrás que de forma predeterminada la Zona Privada se encarga de privatizar automáticamente las páginas y restringir su acceso según los roles o usuarios asignados.
Pero, ¿qué pasa si queremos utilizar un Custom Post Type (CPT) personalizado, como Reservas, Soporte, Consultas, etc.?
En este artículo, vamos a ver cómo privatizar un CPT llamado «Consultas», demostrando lo fácil que es hacerlo simplemente cambiando algunas condiciones en el código.
Antes de continuar, lo primero es tener el CPT creado. Si no sabes cómo crear uno, aquí te enseño cómo hacerlo con pocas líneas de código para que puedas generar CPTs a tu antojo.
Ahora que ya tenemos el CPT listo, vamos a ver cómo privatizarlo. En este ejemplo, usaré el código de privatización por roles, pero si utilizas la versión que restringe por usuario, también te sirve; solo necesitarás reemplazar is_page() por is_singular('consultas').
A continuación, te explico más detalladamente cómo hacerlo paso a paso.
1️⃣ Restricción de acceso
ANTES
El código original restringía el acceso a páginas (is_page()).
AHORA
He cambiado is_page() por is_singular('consultas'), para que la restricción se aplique a las Consultas.
Cambio en el código
🔐 Este contenido es solo para suscriptores premium.
✔️ Ahora, los usuarios solo podrán acceder a Consultas si su rol está asignado a ellas.
2️⃣ Área privada del usuario
ANTES
El shortcode [user_private_area] mostraba páginas (post_type => 'page').
AHORA
Ahora muestra Consultas (post_type => 'consultas').
Cambio en el código
🔐 Este contenido es solo para suscriptores premium.
✔️ Ahora, los usuarios verán en su área privada solo las «Consultas» asignadas a su rol, en lugar de páginas.
3️⃣ Notificaciones por correo cuando se publica o actualiza una consulta
ANTES
El sistema de notificaciones enviaba correos cuando se publicaban o actualizaban páginas.
AHORA
Ahora envía correos cuando se publican o actualizan Consultas.
Cambio en el código
🔐 Este contenido es solo para suscriptores premium.
✔️ Ahora, cuando una Consulta es publicada o actualizada, los usuarios con el rol asignado recibirán una notificación por correo.
📌 Resumen de Cambios
| Funcionalidad | Antes (Páginas) | Ahora (Consultas) |
|---|---|---|
| Restricción de acceso | is_page() | is_singular('consultas') |
| Shortcode del área privada | Muestra páginas (post_type => 'page') | Muestra consultas (post_type => 'consultas') |
| Notificaciones por correo | Se enviaban al publicar páginas | Se envían al publicar consultas |
Tanto si utilizas el código que restringe el acceso por roles como el que lo hace por usuarios específicos, el principio es el mismo:
Simplemente cambia la condición is_page() por is_singular('consultas') en el código correspondiente.
Esto significa que puedes aplicar esta misma lógica a cualquier otro CPT que crees en el futuro, como Reservas, Soporte, Pedidos, etc., adaptando la restricción a tus necesidades sin complicaciones.
Estos códigos de la zona premium se mantienen regularmente. Si usas un código y no te funciona correctamente, puedes abrir un ticket de soporte explicando los detalles y lo vemos.



¿Y tú que prefieres? ¿Utilizar las páginas o tu propio CPT para la Zona Privada?