Tengo una consulta query_posts en una plantilla WP. Mediante el uso del complemento Más campos, puedo darle al administrador del sitio la capacidad de crear un evento (tipo de publicación personalizada) y luego ingresar una fecha con formato: AAAA / mm / dd.
La pregunta principal es; ¿Qué valor debo pasar a la opción de valor en la matriz meta_query? Actualmente estoy tratando de pasar "fecha (" A / m / dh: i A ")" (menos las comillas), porque, según tengo entendido, eso imprimirá la fecha actual hoy. No me importa la fecha, así que puede ser irrelevante. Por cierto, estoy tratando de usar la opción de comparación para mostrar los próximos eventos, eventos pasados en diferentes lugares de este sitio. En otro lugar, realmente necesito pasar la opción de valor a una matriz que imprime ese primer y último día del mes actual, limitando la salida a los eventos que suceden este mes.
<?php
query_posts( array(
'post_type' => 'event', // only query events
'meta_key' => 'event_date', // load up the event_date meta
'orderby' => 'meta_value', // sort by the event_date
'order' => 'asc', // ascending, so earlier events first
'posts_per_page' => '2',
'meta_query' => array( // restrict posts based on meta values
'key' => 'event_date', // which meta to query
'value' => date("Y/m/d h:i A"), // value for comparison
'compare' => '>=', // method of comparison
'type' => 'DATE' // datatype, we don't want to compare the string values
) // end meta_query array
) // end array
); // close query_posts call
?>
'type' => 'DATE'
?date_i18n()
, en lugar del nativo de phpdate()
.En primer lugar, depende en gran medida de cómo se almacene su fecha en el metavalor. En general, es una buena idea almacenar fechas en MySQL como fechas / marcas de tiempo MySQL.
Las marcas de tiempo de MySQL tienen el formato
Y-m-d h:i:s
.Sin embargo, siempre es una buena idea usar las propias funciones de cambio de fecha de WP. Como tal, para obtener la fecha actual en formato MySQL, use
current_time('mysql')
.Para formatear una fecha MySQL para su visualización, use
mysql2date($format, $mysql_date)
. En este caso, es mejor mostrar la fecha como está configurada en la configuración, así que úsela$format = get_option('date_format');
.Para almacenar una fecha seleccionada por el usuario, deberá transcodificarla en una fecha MySQL. Para hacerlo, la forma más fácil, pero no la más segura, es
date('Y-m-d h:i:s', $unix_timestamp);
.$unix_timestamp
a menudo se puede derivar a través destrtotime($user_input)
.Sin embargo,
strtotime()
no realiza controles de cordura por sí mismo, por lo que es mejor escribir su propia función de conversación.En cuanto a obtener el rango de mes, aquí hay una función que estoy usando para obtener los límites de mes para cualquier marca de tiempo de MySQL:
Si desea obtener los límites de la semana, WP ya viene con una función para eso:
get_weekstartend($time);
que también ofrece los límites como una matriz.Luego puede usarlos en su
meta_query
argumento haciendo dos comparaciones separadas.fuente
Y-m-d G:i:s
"?G:i:s
es de 24 horas,h:i:s
es de 12 horas.Terminé yendo con lo siguiente. Configuré un campo de evento-math y comparé a partir de ahí. gracias por la ayuda
fuente
Hola a continuación, estoy publicando mi solución. Donde he almacenado la fecha en
Y-m-d H:i
formato (como 2013-07-31 16:45).El evento que finaliza después de Hoy solo será consultado por
meta_query
.date_default_timezone_set('Asia/Calcutta');
Configuré la zona horaria predeterminada para la
date()
función.fuente