The Events Calendar es un magnífico plugin gratuito para WordPress que nos permite mostrar eventos en formato de calendario o de listado. También ofrece una lista detallada del evento, para el que se pueden incluir título, descripción, imagen, fecha, localización, mapa de Google maps, etc.

Pero nos hemos encontrado con una necesidad que no es tan fácil de configurar con este plugin: queremos que el calendario y todos los eventos sean privados, visibles sólo por los usuarios que han iniciado sesión.

The events calendar te crea automáticamente una página con el calendario. En la configuración del plugin puedes elegir la URL de esta página y algunos aspectos de visualización, pero no puedes realizar cambios directamente en la página. Por este motivo, el típico plugin que permite restringir ciertos contenidos para ciertos usuarios no nos sirve.

La solución es editar directamente la plantilla del plugin, en concreto los archivos:

  • wp-content/plugins/the-events-calendar/src/views/list.php
  • wp-content/plugins/the-events-calendar/src/views/month.php
  • wp-content/plugins/the-events-calendar/src/views/single-event.php
  • wp-content/plugins/the-events-calendar/src/views/day.php
Copiaremos todos esos archivos, crearemos la carpeta:
wp-content/themes/vuestra-plantilla/tribe-events
y meteremos dentro los archivos que acabamos de copiar.
Ahora ya podemos editar estos archivos, que sobreescriben a los del plugin y lo seguirán haciendo, aunque éste se actualice.
En estos archivos tendremos que incluir la condición de que el usuario este logueado al principio del código, después de los comentarios:

if ( is_user_logged_in() ) {

y cerrar la condición al final de código, incluso podremos utilizar un else para mostrar un determinado texto si el usuario no ha iniciado sesión:

} else {
echo ‘Este contenido es privado para nuestros asociados. Debes <a href=»enlace-a-la-pagina-de-login»>iniciar sesión</a> para acceder al mismo.’;
}

Incluso, si utilizáis algún plugin para controlar el acceso privado a determinadas secciones, podéis utilizar shortcodes aquí para mostrar un formulario de inicio de sesión.Faltaría un archivo más por modificar, además de los citados anteriormente. Éste es:

  • wp-content/plugins/the-events-calendar/src/views/modules/meta.php
Para el que incluiremos también la condición (esta vez sin el else). Es para ocultar la información de un evento en particular como la fecha, hora, ubicación,. etc.