Intentando excluir publicaciones personalizadas basadas en fecha, mientras se ordenan por campo personalizado
Tengo un tipo de publicación personalizada llamado "performance". Tengo una consulta personalizada que ordena las publicaciones por el valor de un campo personalizado (order-date). Ahora quiero excluir las publicaciones que tienen order-dates que están en el pasado. Pensé que podría usar el mismo valor "order-date" para compararlo con la fecha actual y determinar si una publicación debe mostrarse, pero no puedo encontrar un ejemplo que funcione con el ordenamiento. Todo lo que he probado rompe el orden.
¡Esto parece funcionar!
<?php
$paged = ( get_query_var('paged') ) ? get_query_var('paged') : 1;
$today = date('Y-m-d');
query_posts(array(
'post_type' => 'performance',
'posts_per_page' => 5,
'caller_get_posts' => 5,
'paged' => $paged,
'meta_key' => 'order-date',
'orderby' => 'meta_value',
'order' => 'ASC',
'meta_query' => array(
array(
'key' => 'order-date',
'meta-value' => $value,
'value' => $today,
'compare' => '>=',
'type' => 'CHAR'
)
)
));
if (have_posts()) :
while (have_posts()) : the_post();
?>
Nota que definí "$today" y lo agregué al meta_array para compararlo con el meta-valor. Las publicaciones de performance con fechas pasadas desaparecieron de la lista y todo parece funcionar como debería. Gracias a Brady por ponerme en el camino correcto.

Necesitas hacer uso de meta_query
http://codex.wordpress.org/Class_Reference/WP_Query#Custom_Field_Parameters
<?php
$paged = ( get_query_var('paged') ) ? get_query_var('paged') : 1;
query_posts(array(
'post_type' => 'performance', // Tipo de publicación
'posts_per_page' => 5, // Publicaciones por página
'caller_get_posts' => 5,
'paged' => $paged, // Paginación
'meta_key' => 'order-date', // Clave meta
'orderby' => 'meta_value', // Ordenar por valor meta
'order' => 'ASC', // Orden ascendente
'meta_query' => array( // Consulta meta
array(
'key' => 'order-date', // Clave
'value' => $value, // Valor
'compare' => '>=', // Comparación (mayor o igual que)
'type' => 'CHAR' // Tipo de dato
)
)
));
if (have_posts()) : // Si hay publicaciones
while (have_posts()) : the_post(); // Bucle de publicaciones
?>

Brady - Gracias, pero no estoy seguro de cómo implementar esto. Me está apareciendo un error.

Aquí está el código que implementé: <?php $paged = ( get_query_var('paged') ) ? get_query_var('paged') : 1; $args = array( 'post_type' => 'performance', 'meta_query' => array( array( 'key' => 'order-date', 'value' => $value, 'compare' => '>=' ), array( 'posts_per_page' => 5, 'caller_get_posts' => 5, 'paged' => $paged, 'meta_key' => 'order-date', 'orderby' => 'meta_value', 'order' => 'ASC' ), ) ); $query = new WP_Query( $args ); if (have_posts()) : while (have_posts()) : the_post(); ?>

primero, ¿qué error estás obteniendo? segundo, por favor actualiza tu pregunta con el código que estás intentando. tercero, ¿cómo estás almacenando tu fecha, en qué formato?

<?php $paged = ( get_query_var('paged') ) ? get_query_var('paged') : 1; $args = array( 'meta_query' => array( array( 'key' => 'order-date', 'value' => $value, 'compare' => '>=' ), array( 'post_type' => 'performance', 'posts_per_page' => 5, 'caller_get_posts' => 5, 'paged' => $paged, 'meta_key' => 'order-date', 'orderby' => 'meta_value', 'order' => 'ASC' ) ) ); $query = new WP_Query( $args ); if (have_posts()) : while (have_posts()) : the_post(); ?>

El código está arriba. No puedo hacer que se muestre correctamente en el cuadro de comentarios (usando 4 espacios). El valor del campo personalizado está en formato Y-m-d. En lugar de un mensaje de error, simplemente muestra publicaciones del blog en lugar de publicaciones personalizadas.

No publiques código en el cuadro de comentarios, no funcionará. En su lugar, edita tu pregunta original y colócalo allí. En segundo lugar, el código que te di era para agregar a lo que ya tenías, no para reemplazarlo. En tercer lugar, como estás usando el formato Y-m-d, tendrás que configurar el tipo de consulta como CHAR y no como DATE como te indiqué originalmente.

Gracias, Brady. El código anterior no rompe nada, no afecta mi ordenamiento y muestra las publicaciones personalizadas. Pero no filtra los eventos pasados: todavía muestra todas las publicaciones personalizadas de actuaciones.
