Cómo hacer su propia lista de eventos usando tipos de publicaciones personalizadas en WordPress
Una de las ventajas de usar WordPress es su gran flexibilidad. No es solo para publicaciones y páginas: los tipos de publicaciones personalizadas pueden extender las funciones principales a prácticamente cualquier cosa.
Echemos un vistazo hoy a lo que podría hacer con los tipos de publicación personalizados, así como un ejemplo práctico rápido de cómo crear una lista de eventos utilizando un tipo de publicación personalizada llamado Evento.
Nota: Este tutorial debe considerarse solo con fines educativos, de modo que pueda aprender el código utilizado para crear tipos de publicaciones personalizadas. Si realmente desea un excelente complemento de lista de eventos para su sitio de WordPress, pruebe The Events Calendar , que está bien desarrollado y es gratuito.
¿Qué son los tipos de publicaciones personalizadas en WordPress?
Por lo general, un sitio de WordPress consta de dos tipos de contenido: publicaciones de blog con fecha y páginas estáticas. La mayoría de los que hemos creado un blog de WordPress estamos familiarizados con el hecho de que las páginas deben usarse para cosas como "Acerca de mí" o "Información de contacto", mientras que las publicaciones regulares van a su blog.
Pero más allá de eso, ¿qué pasa si desea agregar otro tipo especial de contenido que realmente no encaja en el orden cronológico del blog y ciertamente no es estático? Ahí es donde entran los tipos de publicaciones personalizadas.
Una solicitud bastante común para los sitios de clubes o grupos es tener algún tipo de calendario de eventos. Una solución que podría aplicarse es crear una categoría de publicaciones de Eventos separada. El problema con esto es que se mostrarán en la línea de tiempo del blog principal, y realmente deberíamos separar los dos conceptos por completo.
Para ese propósito, creemos un nuevo tipo de publicación llamado evento, que tendrá su propia sección separada de la interfaz de administración.
Cómo crear un tipo de publicación personalizada en WordPress
Haremos esto ajustando sus archivos de tema directamente. Puede lograr el mismo efecto a través de un complemento, pero para demostrar el concepto y la práctica, es más fácil escribirlos directamente. Si no se siente cómodo haciendo esto, considere usar el complemento Mis funciones personalizadas , que le permite agregar código de forma no destructiva.
Abra el archivo functions.php de su tema, almacenado en la carpeta del tema dentro de wp-content / themes ; o use el complemento Mis funciones personalizadas, que encontrará en Configuración > Insertador de PHP . Al final del archivo, agregue este código:
add_action('init', 'events_init');
function events_init() {
$args = array(
'labels' => array(
'name' => __('Events'),
'singular_name' => __('Event'),
),
'public' => true,
'has_archive' => true,
'rewrite' => array("slug" => "events"),
'supports' => array('thumbnail','editor','title','custom-fields')
);
register_post_type( 'events' , $args );
}
Asegúrese de hacer esto antes de la etiqueta php ( ?> ) De cierre, si hay una en su archivo functions.php .
Tómese un tiempo para leer el código. Está declarando algunas propiedades (como etiquetas para la interfaz) y cómo se deben manejar las URL (reescrituras), así como las características que admite este tipo de publicación. Puede, por ejemplo, agregar un campo personalizado a su tipo de publicación personalizada con la propiedad de soportes.
En este caso, hemos declarado que nuestro tipo de evento admite miniaturas, un editor de contenido para la descripción del evento, un título del evento y campos personalizados. También agregamos has_archive , de modo que al navegar a la página de eventos, aparecerá un archivo de todos los eventos, similar a un blog.
Eso es todo, ahora, si guarda su tema y vuelve a cargar su blog, asumiendo que no tiene ningún error, ahora debería ver una nueva sección de eventos en la barra lateral de administración. ¡Hurra!
Agregue algunos eventos de ejemplo ahora.
Luego, dado que se trata de un evento, cree un campo personalizado llamado fecha para indicar cuándo ocurrirá el evento. Utilice el formato mm / dd / aaaa .
Tenga en cuenta que necesitamos utilizar campos personalizados para especificar la fecha real del evento en lugar de la fecha de la publicación, porque la fecha de la publicación representa cuándo se publica el aviso. Dado que presumiblemente estaría agregando eventos que ocurrirán en el futuro, establecer la fecha de publicación en la fecha real del evento sería inútil.
Si intenta ver el evento en este punto, es posible que obtenga un error 404. Esto se debe a que WordPress necesita regenerar la estructura de su URL de enlace permanente para dar cuenta de este nuevo tipo de publicación. Dirígete a la página Configuración> Enlaces permanentes y vuelve a presionar guardar.
Ahora debería poder ver la publicación del evento individual. Tenga en cuenta que la primera parte de la URL, después de su nombre de dominio, es / events / . Elegimos esto en esta línea de código:
'rewrite' => array("slug" => "events"),
Personalizar la página de listado de eventos
Ahora que tiene todos estos eventos fantásticos en su blog, sería bueno enumerarlos en algún lugar. Para eso, crearemos una plantilla de página especial, para que luego pueda agregar esa página a sus elementos de menú habituales junto con Acerca de o Contacto.
Como ya especificamos que el tipo de publicación de Evento debe tener un archivo, puede continuar y ver cuál es el valor predeterminado visitando / events / . En el tema estándar de Twenty-Seventeen en mi sitio de prueba, obtuve esto:
La personalización de esta salida dependerá del tema que esté utilizando, y cubrir todo el sistema de plantillas de WordPress está fuera del alcance de este artículo. Sin embargo, por el bien de este tutorial, asumiré que estás usando Twenty-Seventeen.
Comience creando una copia de archive.php y cámbiele el nombre a archive-events.php . Esta es una convención de nomenclatura estándar que significa que WordPress usará automáticamente esta plantilla para mostrar el archivo para el tipo de publicación de eventos.
Al examinar el archivo, los autores de Twenty-Seventeen han proporcionado un mecanismo de formato de publicación, que es demasiado complejo para nuestras necesidades:
/*
* Include the Post-Format-specific template for the content.
* If you want to override this in a child theme, then include a file
* called content-___.php (where ___ is the Post Format name) and that will be used instead.
*/
get_template_part( 'template-parts/post/content', get_post_format() );
Nota: Se recomienda un tema hijo, ya que cualquier actualización del tema original sobrescribirá sus cambios. Este artículo de soporte de WordPress describe el proceso de creación de un tema hijo para Twenty-Seventeen. Por brevedad, solo voy a trabajar en el tema original y no me importa si mi trabajo se pierde en una actualización posterior.
Corta todo el bloque y pega lo siguiente. Esto es solo una copia simplificada de lo que hay en esas plantillas de formato de publicación, por el bien de aprender:
<article>
<header class="entry-header">
<?php echo '<div class="entry-meta">'.twentyseventeen_time_link().'</div>';
the_title( '<h2 class="entry-title"><a href="' . esc_url( get_permalink() ) . '" rel="bookmark">', '</a></h2>' );?>
</header>
<?php if ( '' !== get_the_post_thumbnail() && ! is_single() ) : ?>
<div class="post-thumbnail">
<a href="<?php the_permalink(); ?>">
<?php the_post_thumbnail( 'twentyseventeen-featured-image' ); ?>
</a>
</div>
<?php endif; ?>
<div class="entry-content">
<?php the_content(sprintf('Continue reading<span class="screen-reader-text"> "%s"</span>',get_the_title()));?>
</div>
</article>
Si guarda y obtiene una vista previa de la página Eventos nuevamente, notará que ahora tiene fechas. Pero están equivocados. Actualmente están mostrando la fecha de publicación en lugar de la fecha del evento. Como último paso, cambiemos eso a la fecha real en que se llevará a cabo el evento. Encuentra el bit que genera el tiempo
twenty_seventeen_time_link()
y reemplácelo con lo siguiente:
date('l jS F Y',strtotime(get_post_meta(get_the_ID(), 'date', true)))
Esto es obtener la fecha del metacampo de publicación que configuramos, luego usar la función PHP date () para formatearlo en algo más legible.
¿Próximos pasos?
Si no está satisfecho con su proveedor de alojamiento web actual, le recomendamos encarecidamente que utilice un servidor de WordPress administrado como WP Engine , que nosotros mismos utilizamos para nuestros sitios hermanos. De lo contrario, InMotion Hosting ofrece planes asequibles, que son incluso más económicos con nuestro descuento especial cuando utiliza este enlace .
Luego, tenga en cuenta que cuando creamos el tipo de publicación de evento, ya codificamos la compatibilidad con miniaturas destacadas. Utilice nuestra guía de imágenes destacadas y publique miniaturas para capturar y mostrar una imagen destacada en el archivo de listado de eventos.