Quantcast
Channel: derrotero · net » tutoriales
Viewing all articles
Browse latest Browse all 10

Una página de eventos muy ligera con WordPress

$
0
0

Los típicos plugins de eventos para WordPress tienen numerosas y avanzadas funcionalidades: calendarios de actividades en distintos estilos (por mes, por semana), agenda, diferentes filtros, por no mencionar gestión de inscripciones, entradas y asistentes. Pero son pesados y complejos. ¿Qué hacer cuando apenas necesitas el 10% de esas funciones?

Mi deseo era construir nada más que una página con dos listados: uno de eventos en preparación, y otro de eventos realizados. Automatizada, de tal modo que al llegar la fecha del evento, pasara a la lista de realizados sin tener que intervenir. Y un último detalle: externalizar la complejidad técnica. Esto quiere decir que no quería hacer el template en PHP para la página de eventos. Tendría que ir en el contenido.

Pensé que no sería complicado, que seguramente existía un plugin o un par de ellos, en el mayor repositorio de complementos para un software de sitio web que existe, con los que poner en práctica rápidamente mi idea.

Tras varias semanas de pruebas e intentos infructuosos, lo que finalmente me ha servido ha sido lo siguiente:

  • Un custom post type para los eventos.
  • Una custom taxonomy exclusiva de eventos, con su situación (futuro y realizado).
  • Un plugin que cambie el valor de la custom taxonomy automáticamente al llegar una fecha. He utilizado Post Expirator.
  • Un plugin que proporcione un shortcode para generar listas de entradas a medida. He utilizado Display posts shortcode.

 

Configuración del sistema de eventos

  1. Registrar una taxonomía personalizada (custom taxonomy). Se puede hacer con un plugin como Custom Post Type UI, o directamente en el archivo functions.php. Esta taxonomía se puede llamar situación del evento. Será jerárquica y tendrá dos valores: Futuro y Realizado.
  2. Registrar un tipo de entrada personalizado (custom post type), de nuevo usando un plugin o en functions.php. Este tipo personalizado se llamará eventos. Será cronológico, como las entradas, y no jerárquico. Por supuesto, debe aparecer en la administración y ser visible a los visitantes. No necesitamos categorías ni etiquetas, pero sí necesitamos asignar a este tipo de entrada la taxonomía previamente creada.
  3. Instalar el plugin Post Expirer. Configurarlo para que, en el tipo de entrada eventos, funcione con la taxonomía situación.
  4. Instalar el plugin Display Posts Shortcode.
  5. Crear una nueva página (o dos) para las dos listas de eventos: eventos futuros y eventos realizados.
    1. Para los eventos futuros, en el contenido de la página incluiremos un shortcode como el siguiente: [display-posts post-type="evento" situacion="futuro"] (incluyo sólo los parámetros mínimos).
    2. Para los eventos pasados, en el contenido de la página incluiremos un shortcode como el siguiente: [display-posts post-type="evento" situacion="realizado"]
  6. Publicar la página.

 

Uso del sistema de eventos

  1. wordpress-eventosCreamos un nuevo evento y lo rellenamos con todo el contenido necesario.
  2. En Situación del evento, lo marcamos como Futuro.
  3. En la fecha de expiración (si este cuadro no aparece, habilitarlo en Opciones de pantalla), rellenar la fecha y hora de celebración del evento. Como acción de expiración, seleccionar reemplazar categoría, y marcar la opción Realizado.
  4. Publicar el evento. No cambiar la fecha de publicación por la de celebración del evento: dejar la fecha en la que queremos que ese contenido aparezca en la web (en la mayoría de los casos, inmediatamente).
  5. El evento aparecerá en la lista de eventos futuros. Cuando se cumpla la fecha de expiración marcada, se moverá automáticamente a la lista de eventos realizados.

 

Configuración avanzada

No hay eventos que mostrar

Por defecto, el shortcode display-posts no muestra nada cuando no hay entradas que mostrar, es decir, entradas que cumplan las condiciones definidas en los parámetros del shortcode. Esto quiere decir que cuando no hay ningún evento en preparación con una fecha futura, la lista aparecería en blanco. Es muy preferible que aparezca algún texto, por ejemplo: “Actualmente no hay eventos en preparación”. Para eso, tendremos que añadir este código a nuestro archivo functions.php:

/**
* Display Posts Shortcode - Display message if no results
*
* @author Bill Erickson
* @link http://www.billerickson.net/code/display-posts-shortcode-no-results
*
* @param string $output, default is empty
* @return string $output
*/

add_filter( 'display_posts_shortcode_no_results', 'be_no_results' );

function be_no_results( $output ) {
    $output = '<p>Actualmente no hay eventos en preparación.</p>';
    return $output;
}

Nota: el archivo functions.php pertenece al tema y las modificaciones son eliminadas cuando se actualiza éste a una nueva versión. Por eso nunca hay que modificar el functions.php del tema: hay que crear un tema hijo, o mejor incluso, crear un plugin personalizado.

Mostrar la fecha del evento

La fecha que el parámetro include_date del shortcode muestra es la fecha de publicación; en nuestra página de agenda, nos interesa mostrar la fecha de celebración del evento, que como hemos visto es la fecha de expiración que configuramos en cada evento.

Para ello, tenemos que configurar el shortcode display-posts para que incluya el campo personalizado (custom field) en el que el plugin Post expirer guarda esa fecha: este campo se llama _expiration-date.
Añadimos este código a functions.php:
/**
* Add custom fields to Display Posts Shortcode
* @author Bill Erickson
* @link http://wordpress.org/extend/plugins/display-posts-shortcode/
* @link http://www.billerickson.net/shortcode-to-display-posts/comment-page-1/#comment-4565
*
* @param $output string, the original markup for an individual post
* @param $atts array, all the attributes passed to the shortcode
* @param $image string, the image part of the output
* @param $title string, the title part of the output
* @param $date string, the date part of the output
* @param $excerpt string, the excerpt part of the output
* @return $output string, the modified markup for an individual post
*/
add_filter( 'display_posts_shortcode_output', 'be_display_posts_custom_fields', 10, 6 );
function be_display_posts_custom_fields( $output, $atts, $image, $title, $date, $excerpt ) {

// Get our custom fields
global $post;
$expirationtimestamp = esc_attr( get_post_meta( $post->ID, '_expiration-date', true ) );
settype( $expirationtimestamp, 'int' );
$expiration = date( 'd/m/Y', $expirationtimestamp );

// If there's a value for the custom field, let's wrap them with <span>'s so you can control them with CSS
if( isset( $expiration ) ) $expiration = '<span class="expiration-date">' . $expiration . '</span> ';

// Now let's rebuild the output.
$output = '<li>' . $image . $title . /*$expiration .*/ $date . $excerpt . '</li>';

// Finally we'll return the modified output
return $output;
}

Nota: estas personalizaciones del shortcode son globales. Esto quiere decir que si utilizamos el mismo shortcode, por ejemplo, para hacer una lista de entradas recientes, la fecha de expiración también aparecería en esa lista.

El artículo Una página de eventos muy ligera con WordPress es original de David Mendaña en derrotero · net.


Viewing all articles
Browse latest Browse all 10

Latest Images

Pangarap Quotes

Pangarap Quotes

Vimeo 10.7.0 by Vimeo.com, Inc.

Vimeo 10.7.0 by Vimeo.com, Inc.

HANGAD

HANGAD

MAKAKAALAM

MAKAKAALAM

Doodle Jump 3.11.30 by Lima Sky LLC

Doodle Jump 3.11.30 by Lima Sky LLC

Trending Articles


Gwapo Quotes : Babaero Quotes


Lola Bunny para colorear


Dino Rey para colorear


Girasoles para colorear


Dibujos de animales para imprimir


Renos para colorear


Dromedario para colorear


Angry Quotes Tagalog – Best Patama Quotes


Love Quotes Tagalog


RE: Mutton Pies (mely)


Pokemon para colorear


Kung Fu Panda para colorear


Libros para colorear


Mandalas de flores para colorear


Dibujos para colorear de perros


Toro para colorear


mayabang Quotes, Torpe Quotes, tanga Quotes


Long Distance Relationship Tagalog Love Quotes


Tagalog Long Distance Relationship Love Quotes


Mga Tala sa “Unang Siglo ng Nobela sa Filipinas” (2009) ni Virgilio S. Almario





Latest Images

Pangarap Quotes

Pangarap Quotes

Vimeo 10.7.0 by Vimeo.com, Inc.

Vimeo 10.7.0 by Vimeo.com, Inc.

HANGAD

HANGAD

MAKAKAALAM

MAKAKAALAM

Doodle Jump 3.11.30 by Lima Sky LLC

Doodle Jump 3.11.30 by Lima Sky LLC