J'ai un appel query_posts dans un modèle WP. Grâce à l’utilisation du plugin More Fields, je peux donner à l’administrateur du site la possibilité de créer un événement (type de message personnalisé), puis de saisir une date au format AAAA / mm / jj.
La question principale est: Quelle valeur dois-je passer à l'option value du tableau meta_query? J'essaie actuellement de passer "date (" J / m / dh: i A ")" (moins les guillemets), car, si j'ai bien compris, la date du jour sera imprimée aujourd'hui. Je me moque de l'heure de la date, ce n'est peut-être pas pertinent. Ulitimatly, j’essaie d’utiliser l’option de comparaison pour préciser les événements à venir, les événements passés à différents endroits sur ce site. À un autre endroit, j'ai besoin de passer à l'option value un tableau qui affiche le premier et le dernier jour du mois en cours, en limitant la sortie aux événements survenant ce mois-ci.
<?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()
au lieu du php natifdate()
.Cela dépend en grande partie de la façon dont votre date est stockée dans la méta-valeur en premier lieu. En général, il est conseillé de stocker les dates dans MySQL sous forme de dates / horodatages MySQL.
Les horodatages MySQL ont le format
Y-m-d h:i:s
.Cependant, il est toujours bon d'utiliser les fonctions de gestion des dates de WP. En tant que tel, pour obtenir la date actuelle au format MySQL, utilisez
current_time('mysql')
.Pour formater une date MySQL en vue de son affichage, utilisez
mysql2date($format, $mysql_date)
. Dans ce cas, il est préférable d'afficher la date telle que configurée dans les paramètres, utilisez donc$format = get_option('date_format');
.Pour stocker une date sélectionnée par l'utilisateur, vous devez la convertir en une date MySQL. Pour ce faire, le moyen le plus simple - mais pas le plus sûr - est de le faire
date('Y-m-d h:i:s', $unix_timestamp);
.$unix_timestamp
peut souvent être dérivé viastrtotime($user_input)
.Cependant,
strtotime()
ne vérifiant pas l'intégrité physique, il est préférable d'écrire votre propre fonction de conversation.Pour obtenir la plage de mois, voici une fonction que j'utilise pour obtenir les limites de mois pour tout horodatage MySQL:
Si vous voulez obtenir les limites de semaine, WP est déjà doté d'une fonction:, qui
get_weekstartend($time);
fournit également les limites sous forme de tableau.Vous pouvez ensuite les utiliser dans votre
meta_query
argument en faisant deux comparaisons distinctes.la source
Y-m-d G:i:s
"?G:i:s
est 24 heures,h:i:s
est 12 heures.Je me suis retrouvé avec ce qui suit. J'ai configuré un champ événementiel et comparé à partir de là. Merci pour l'aide
la source
Salut ci-dessous, je poste ma solution. Où j'ai mis la date au
Y-m-d H:i
format (par exemple 2013-07-31 16:45).L'événement qui se termine après aujourd'hui ne sera interrogé que par
meta_query
.date_default_timezone_set('Asia/Calcutta');
Je règle le fuseau horaire par défaut pour la
date()
fonction.la source