En este tutorial veremos cómo restringir y habilitar contenido privado en WordPress para un rol de usuario concreto.
El contenido privado en WordPress
Por defecto WordPress ofrece un par de alternativas para crear contenido privado a través de la visibilidad de las entradas y páginas.
- Por un lado, podemos proteger nuestro contenido con contraseña y de esta forma sólo los usuarios que tengan el password podrán acceder al mismo.
- Por otro lado tenemos la posibilidad de marcar nuestras páginas y entradas como "Privadas". Cuando esto sucede sólo los usuarios con permisos suficientes pueden leer dichos artículos o páginas.
¿Pero qué pasa si queremos hacer nuestro WordPress totalmente privado? ¿Y si queremos habilitar el acceso a cierto contenido privado sólo a unos roles concretos? No encontraremos ninguna de estas dos opciones en los menús de WordPress de forma predeterminada. Sin embargo sí que podemos añadir fácilmente estas funcionalidades, como muchas otras, a través de plugins y mediante pequeños fragmentos de código.
Este código personalizado se puede incluir de varias formas. Si necesitáis información para hacerlo, podéis acceder a este tutorial en el que aprenderemos a añadir código en WordPress. En este caso optaremos por usar un plugin que hemos creado específicamente para estas cuestiones. En el siguiente apartado veremos los pasos a seguir.
Contenido extra para usuarios concretos
En este punto vamos a aprender a habilitar contenido restringido a ciertos grupos de usuarios. De esta forma podemos ofrecer contenido especial o extra a parte de los usuarios de nuestra web, lo cual puede interesarnos por diversos motivos.
Para hacerlo tenemos la opción de asignar contraseñas de lectura a las páginas o entradas que queramos, tal como comentamos más arriba.

Configurar página con contraseña en WordPress
Simplemente compartiendo nuestra contraseña con esos usuarios, estos podrían introducir la misma y ver el contenido de ese artículo.
Esto es funcional, y puede hacerse de forma sencilla. Pero si queremos crear y mantener un pequeño membership site, puede no ser muy eficiente. Si cambiamos la contraseña periódicamente o usamos passwords distintas en nuestros contenidos, este método nos dará más trabajo de la cuenta.
Una forma más práctica de habilitar el acceso al contenido privado sería usar un pequeño código con el que concedemos permisos de lectura especial al rol o roles que nos interese. En el siguiente punto vamos a ver cómo hacerlo.
Habilitar acceso a contenido privado según el rol del usuario
Podemos configurar la visibilidad de nuestros post y páginas en WordPress marcando nuestras entradas y páginas con la opción "Privada" que encontraremos en el menú "Publicar" al editar nuestro contenido.

Configurar contenido privado en WordPress
Las entradas y páginas privadas sólo son accesibles a los usuarios con roles Super Admin, Administrador y Editor. Es decir, si marcamos la visibilidad de un post o página como "Privada", por defecto los suscriptores, colaboradores, y autores registrados en nuestra web no podrán verla porque no tienen permisos o capacidades suficientes.

Acceso restringido para el rol actual
¿Entonces, cómo hacemos para que un contenido privado sea accesible también a nuestros suscriptores o a cualquier otro rol? Lo que vamos a hacer es añadir un pequeño código con el que concedamos esos permisos de lectura a un rol concreto, en este caso al rol suscriptor. De esta forma cuando nuestros suscriptores inicien sesión en nuestra página, van a poder acceder a las páginas y post que configuremos como privados.
Añadiremos este código en un plugin que hemos creado. Recordad que para modificar el código de cualquier plugin en WordPress, es conveniente que lo desactivemos primero. Luego haremos los cambios, y una vez finalizada la edición, guardamos y volvemos a activarlo. Así que vamos a hacer esto mismo con nuestro plugin utilizando el siguiente código:
// Añadir permisos de lectura a páginas y entradas privadas para cualquier usuario con rol suscriptor. function wp_acceso_contenido_privado() { global $wp_roles; // Obtenemos en una variable el rol suscriptor. $role = get_role('subscriber'); // Le añadimos el permiso de lectura a páginas privadas. $role->add_cap('read_private_pages'); // Incluimos también el permiso de lectura a posts privados. $role->add_cap('read_private_posts'); } // Llamada a nuestra función. add_action ( 'admin_init', 'wp_acceso_contenido_privado' );
Este código lo que hace es tomar el rol suscriptor ("subscriber"), y concederle permisos de lectura especiales, concretamente permitirá a los suscriptores leer el contenido de páginas y artículos privados. Podríamos usar sólo una de las dos opciones si nos interesa. Como vemos en el código esto se hace a través de la función "add_cap".
Una vez activado nuestro plugin podemos probarlo. Iniciando sesión como suscriptores, veremos que ahora sí tenemos acceso a nuestra página privada y podemos ver todo su contenido. Si el suscriptor no inicia sesión, no podrá ver el contenido de nuestra página. Si el usuario que inicia sesión tiene rol de autor, tampoco podrá verla. Este permiso especial se tiene que conceder expresamente.

Acceso a contenido privado una vez habilitados los permisos para el rol suscriptor
Por lo que, lo mismo que hemos hecho con el rol suscriptor, podríamos hacerlo con el rol autor o colaborador. Para ello simplemente tendríamos que sustituir "subscriber" (rol suscriptor) por "author" (rol autor) o "contributor" (rol colaborador).
Sólo un apunte aquí. Tened cuidado al escribir el nombre del rol. Si escribimos un rol que no existe es posible que nos aparezca un error y no podamos acceder a nuestro escritorio de WordPress. Para solucionarlo simplemente tendréis que acceder al administrador de archivos de vuestro hosting, dirigiros a la instalación de WordPress que estéis modificando, y cambiar el nombre de la carpeta del plugin que acabamos de crear.
Una vez hecho, editamos el archivo .php con el código correcto, y volvéis a restaurar el nombre de la carpeta de vuestro plugin. Con estos sencillos pasos tendréis acceso de nuevo a vuestro panel.
Restaurar los permisos
Hay que tener en cuenta que la función add_cap va a grabar el permiso en nuestra base de datos. Es decir, ese nuevo permiso que le estamos concediendo al suscriptor va a quedar almacenado y asociado al rol al que lo hayamos vinculado. En el caso del ejemplo se guardará el permiso de lectura para páginas y post privados en nuestro rol suscriptor.
Esto significa que si desactivamos o incluso borramos nuestro plugin, los suscriptores que inicien sesión en nuestra web podrán seguir viendo el contenido privado. Van a seguir con ese permiso asociado.
Así que si en algún momento queremos retirar esos permisos a los suscriptores, o a otro rol de usuario, tendremos que modificar nuestro plugin y cambiar la función "add_cap" por "remove_cap", como podemos ver a continuación. Recordad hacer los cambios con el plugin desactivado, y volver a activarlo al terminar.
// Retirar permisos de lectura especiales a usuarios con rol suscriptor. function wp_restrigir_acceso_contenido_privado() { global $wp_roles; // Obtenemos en una variable el rol suscriptor. $role = get_role('subscriber'); // Retiramos el permiso de lectura a páginas privadas. $role->remove_cap('read_private_pages'); // Retiramos también el permiso de lectura a posts privados. $role->remove_cap('read_private_posts'); } // Llamada a nuestra función. add_action ( 'admin_init', 'wp_restrigir_acceso_contenido_privado' );
Lo mismo podríamos hacer con cualquiera de los demás roles. Si borramos sin querer algún permiso, podemos volver a restablecerlo usando "add_cap" como vimos al principio.
¡Y esto es todo! Con estos sencillos pasos podéis conseguir compartir contenido público y privado en función del rol de vuestros usuarios.
Resumen y conclusión
En muchos casos puede ser útil ofrecer contenido extra a nuestros usuarios. Podemos hacerlo asignando una contraseña a nuestros post o páginas, y también a través de código si buscamos mostrar nuestro contenido privado a un rol o roles concretos.
Para ello tendremos que marcar las páginas y entradas que queramos como "Privadas" y añadir un pequeño fragmento de código con el que concedemos permisos de lectura extra a nuestros suscriptores, colaboradores o autores según nos interese. El proceso es muy sencillo. Las posibilidades de modificar WordPress a través de plugins o código personalizado son infinitas.
Y hasta aquí el tutorial de hoy. Si queréis aprender más, os recomendamos los cursos de boluda.com. Tendréis acceso a 6753 vídeos sobre WordPress, Membership sites, plugins, desarrollo y muchos otros temas interesantes.