custom-post-types – ¿Cómo filtrar publicaciones personalizadas por etiquetas y campos personalizados?

Pregunta:

Estoy planeando un sitio para un cliente que desea que los usuarios puedan filtrar los próximos eventos según los siguientes criterios:

Escriba, por ejemplo, comedia, teatro, música, etc.

Fecha diaria o fin de semana

Duración Diaria o Medio día

Quiero profundizar más en las publicaciones personalizadas, por lo que estableceré un tipo de publicación personalizada para 'Eventos' (no jerárquico) y, al crear una nueva publicación, agregaré campos personalizados para el tipo, la fecha y la duración.

La pregunta que tengo es cómo usaría query_posts () para:

  1. Enumere los eventos de modo que el más pronto (es decir, el próximo evento que ocurra) aparezca primero y los últimos eventos al final.
  2. ¿Filtrar por múltiples valores meta (tipo, fecha y duración)?

Supongo que necesito crear una serie de opciones en las listas desplegables de mi formulario basadas en los valores de los campos personalizados, ¿verdad?

He creado una lista de eventos para un cliente antes, pero sin posibilidades de filtrado. Usé este código query_posts () para obtener las publicaciones personalizadas y ordenar las cosas:

// List the events by custom field 'Date':
$todaysDate = date('Y/m/d'); // set todays date to check against custom field

// query posts
query_posts('post_type=Event&meta_key=Date&meta_compare=>=&meta_value=' . $todaysDate . '&orderby=meta_value&order=ASC');

Sin embargo, no veo cómo podría cambiar este código para filtrar por múltiples campos personalizados … ¿alguna idea?

Gracias

Respuesta:

¡Puede usar taxonomías personalizadas y hacer que query_posts sea mucho más fácil! con eso me refiero a crear una taxonomía personalizada para el tipo, duración así:

add_action('init','register_event_tax');

function register_event_tax(){
register_taxonomy('even_type',array('events'), array(
    'hierarchical' => false,
    'labels' => 'type',
    'show_ui' => true,
    'query_var' => true,
    'rewrite' => array( 'slug' => 'type' ),
  ));

register_taxonomy('even_duration',array('events'), array(
    'hierarchical' => false,
    'labels' => 'type',
    'show_ui' => true,
    'query_var' => true,
    'rewrite' => array( 'slug' => 'duration' ),
  ));
}

entonces puedes consultar publicaciones como esta:

query_posts('post_type=Event&duration=DAILY&type=COMEDY&meta_key=Date&meta_compare=>=&meta_value=' . $todaysDate . '&orderby=meta_value&order=ASC');

y puede cambiar la duración y el tipo para filtrar el tipo o la duración que desee.

espero que esto ayude.

Leave a Comment

Your email address will not be published. Required fields are marked *

web tasarım