En esta serie sobre WP_Query
, Has estado aprendiendo a usar el WP_Query
clase para crear consultas personalizadas en sus archivos de tema o complementos.
Esta parte de la serie lo guiará a través de los argumentos que puede usar para crear consultas de fecha simples y complejas, para generar publicaciones publicadas en, antes, después o entre fechas determinadas..
Le mostraré qué parámetros están disponibles para usted y cómo usarlos para escribir sus consultas. Pero primero, un recordatorio de cómo funcionan los argumentos en WP_Query
.
Antes de comenzar, hagamos un resumen rápido sobre cómo funcionan los argumentos en WP_Query
. Cuando codificas WP_Query
en sus temas o complementos, debe incluir cuatro elementos principales:
En la práctica esto se parecerá a lo siguiente:
have_posts ()) // Iniciar el bucle sobre los resultados de la consulta. while ($ consulta-> have_posts ()) $ consulta-> the_post (); // Los contenidos de los resultados de la consulta consultados van aquí. // Restaura los datos originales de la publicación. wp_reset_postdata (); ?>
Los argumentos son lo que le dice a WordPress qué datos obtener de la base de datos y los que cubriré aquí. Así que todo lo que nos estamos enfocando aquí es la primera parte del código:
$ args = array (// Argumentos para su consulta);
Como puede ver, los argumentos están contenidos en una matriz. Aprenderás cómo codificarlos mientras trabajas en este tutorial..
Codificando tus argumentos
Hay una forma específica de codificar los argumentos en la matriz, que es la siguiente:
$ args = array ('parámetro1' => 'valor', 'parámetro2' => 'valor', 'parámetro3' => 'valor');
Debe incluir los parámetros y sus valores entre comillas simples, usar =>
Entre ellos, y separarlos con una coma. Si se equivoca, es posible que WordPress no agregue todos sus argumentos a la consulta o que obtenga una pantalla en blanco..
También puede usar parámetros para consultar publicaciones con una fecha de publicación en una fecha determinada. Puede ser tan específico como desee con las fechas, utilizando años y meses, por ejemplo, para recuperar una cantidad de publicaciones..
Puede escribir un conjunto simple de argumentos o puede usar date_query
para crear matrices anidadas y ejecutar consultas más complejas. Empecemos con los argumentos más simples..
Los parámetros que puede utilizar para consultar por fecha son:
año
(En t): Año de cuatro dígitos (por ejemplo,. 2015
).mes al año
(En t): Número del mes (desde 1
a 12
).w
(En t): Semana del año (desde 0
a 53
). El modo depende de la "start_of_week"
Opción que puede editar en su página de configuración en el administrador..día
(En t): Día del mes (desde 1
a 31
).hora
(En t): Hora (desde 0
a 23
).minuto
(En t): Minuto (desde 0
a 60
).segundo
(En t): Segundo (0
a 60
).metro
(En t): YearMonth (por ejemplo,. 201502
).Entonces, imagine que está ejecutando un sitio de eventos que utiliza la fecha de publicación para cada evento para indicar la fecha de inicio del evento. Para querer mostrar todos los eventos, pasados y futuros, que suceden en 2015, aquí están los argumentos que necesitaría:
$ args = array ('post_type' => 'evento', 'post_status' => array ('future', 'publish'), 'year' => '2015');
Tenga en cuenta que he usado futuro
y publicar
para el estado de la publicación, ya que las publicaciones programadas para una fecha futura no se consultan de forma predeterminada.
O si desea mostrar automáticamente los eventos que suceden este año y no actualizar su consulta todos los años, primero puede obtener el año actual y luego pasar eso en sus argumentos de consulta:
$ current_year = the_date ('Y'); $ args = array ('post_type' => 'evento', 'post_status' => array ('future', 'publish'), 'year' => $ current_year);
Para usar varios parámetros de fecha para crear consultas más complejas, use la date_query
parámetro. Esto le da acceso a más parámetros:
año
(En t): Año de cuatro dígitos (por ejemplo,. 2015
).mes
(En t): Número del mes (desde 1
a 12
).semana
(En t): Semana del año (desde 0
a 53
).día
(En t): Día del mes (desde 1
a 31
).hora
(En t): Hora (desde 0
a 23
).minuto
(En t): Minuto (desde 0
a 59
).segundo
(En t): Segundo (0
a 59
).después
(cadena / matriz): Fecha para recuperar mensajes después de. antes de
(cadena / matriz): Fecha para recuperar mensajes antes. inclusivo
(booleano): Para después / antes, si el valor exacto debe coincidir o no.comparar
(cuerda): Un operador que utiliza para comparar datos en la base de datos con sus argumentos. Los valores posibles son '='
, '! ='
, '>'
, '> ='
, '<'
, '<='
, 'ME GUSTA'
, 'DIFERENTE A'
, 'EN'
, 'NO EN'
, 'ENTRE'
, 'NO ENTRE'
, 'EXISTE'
, y 'NO EXISTE'
.columna
(cuerda): Columna de la base de datos para consultar: el valor predeterminado es 'posfechar'
.relación
(cuerda): O
o Y
, Cómo se deben comparar los subarreglos. El valor predeterminado es Y
.los date_query
parámetro tiene el formato de esta manera:
$ args = array ('date_query' => array (array (// Los argumentos van aquí.)));
También puede crear múltiples arreglos y definir cómo se compararán utilizando el parámetro de relación. El siguiente ejemplo devolverá las consultas que coincidan con los argumentos en ambas matrices:
$ args = array ('date_query' => array ('relation' => 'AND', array (// Los argumentos van aquí.), array (// Los argumentos van aquí.)));
Mientras que el siguiente código buscará publicaciones que coincidan con los argumentos en cualquiera de los arreglos (o ambos):
$ args = array ('date_query' => array ('relationship' => 'OR', array (// Los argumentos van aquí.), array (// Los argumentos van aquí.)));
Vamos a ilustrar esto con un ejemplo. Digamos que está trabajando en un sitio web de la universidad y desea mostrar publicaciones de este año académico. El año académico se extiende desde el 1 de septiembre de 2014 hasta el 31 de agosto de 2015, por lo que debería encontrar publicaciones en los meses y años relevantes:
$ args = array ('date_query' => array ('relation' => 'OR', array ('year' => '2014', 'month' => ('9, 10, 11, 12')), array ('year' => '2015', 'month' => ('1, 2, 3, 4, 5, 6, 7, 8'))));
Tenga en cuenta que el mes
parámetro toma una cadena para sus argumentos, no una matriz.
Una alternativa al ejemplo anterior es definir las fechas antes y / o después de las cuales desea mostrar publicaciones, usando la antes de
y después
parámetros Estos toman tres argumentos:
año
(cuerda): Acepta cualquier año de cuatro dígitos: vacío por defecto.mes
(cuerda): El mes del año (1
a 12
). El valor predeterminado es 12
.día
(cuerda): El día del mes (1
a 31
). El valor predeterminado es el último día del mes..También puede usar una cadena para la fecha, siempre que sea compatible con el php tiempo de juego
formato.
Así que volviendo a mi ejemplo de mostrar publicaciones para este año académico, tengo dos opciones más. En primer lugar, podría usar una matriz anidada con los parámetros de año y mes:
$ args = array ('date_query' => array ('relation' => 'AND', array ('after' => array ('year' => '2014', 'month' => '9'), ' inclusive '=> verdadero), array (' before '=> array (' year '=>' 2015 ',' month '=>' 8 '),' inclusive '=> true)));
Hay un par de cosas a tener en cuenta aquí:
'relación' => 'Y'
porque las publicaciones deben haber sido publicadas después de mi fecha de inicio y antes de mi fecha de finalización.'inclusivo' => verdadero
Para asegurarse de que WordPress recupera publicaciones publicadas durante septiembre de 2014 y agosto de 2015..También podría escribir esta consulta usando una cadena para las fechas:
$ args = array ('date_query' => array ('array' ('after' => 'August 31st, 2014', 'before' => 'September 1st, 2015', 'inclusive' => false,)));
Tenga en cuenta que debido a la forma en que funcionan las cadenas de fecha, es más confiable usar fechas exclusivas. Esto se debe a que si usa una cadena de fecha, se convertirá a 00:00 en esa fecha. Así que para que funcione, use la hora en su cadena también, o haga lo que he hecho y use el día antes de la fecha desde la que desea mostrar las publicaciones (y después de la fecha en la que desea mostrar las publicaciones hasta).
Algo más que puedes hacer con los parámetros de fecha es mostrar publicaciones publicadas hoy. Regresando a mi sitio de eventos, digamos que quiero mostrar un gran banner en mi página de inicio el día en que ocurra un evento. Puedo escribir una consulta para esto y luego mostrar los detalles del evento si se encuentra uno. Aquí están los argumentos:
$ args = array ('post_type' => 'evento', 'post_status' => array ('future', 'publish'), 'date_query' => array (array ('year' => date ('Y') , 'mes' => fecha ('M'), 'día' => fecha ('D'))));
Utilizando la fecha()
La función devuelve la fecha actual: la he usado tres veces para garantizar que recibo el día, el mes y el año correctos. Tenga en cuenta que también he incluido el post_status
Argumento para asegurar que un evento que suceda más tarde hoy está incluido..
A veces no solo quieres consultar todas las publicaciones publicadas. Utilizando el WP_Query
En la clase, puede crear consultas mucho más específicas para publicar publicaciones por fecha, incluidas las publicaciones que publicó en una fecha determinada, antes de una fecha, después de una fecha o entre un par de fechas..
los date_query
argumentos se combinan con otros parámetros tales como post_status
, que se trata con más detalle en otras partes de esta serie.