web-dev-qa-db-fra.com

Quel est le problème avec mon date_query?

C'est WordPress 3.9 "Smith". J'essaie d'implémenter une nouvelle page d'archive selon la suggestion de @Milo.

$categories = get_categories( $cat_args ); //it's NOT important for the Q, as it's fetching perfectly

foreach( $categories as $category ) {

                        $args = array(
                            'posts_per_page' => -1,
                            'category__in' => array( $category->term_id ),
                            'ignore_sticky_posts' => 1,
                            'post_status' => 'publish',
                            'date_query' => array(
                                                array(
                                                    'after'    => array(
                                                        'year'  => 2014,
                                                        'month' => 01,
                                                        'day'   => 25,
                                                    ),
                                                    'before'    => array(
                                                        'year'  => 2014,
                                                        'month' => 01,
                                                        'day'   => 25,
                                                    ),
                                                    'inclusive' => true,
                                                ),
                                            )
                        );

                        $posts = get_posts( $args );
                        var_dump($posts);
}

Je vais rendre dynamique les dates codées en dur avec la suggestion de Milo, mais avec ce codage en dur, la var_dump($posts) affiche empty arrays.

Je suis le tutoriel de Viper007Bond.com sur WP date_query et j'ai des messages sur Jan25 et Jan22. J'ai essayé de changer la valeur day de 22,24,25 etc., mais les résultats sont des tableaux vides.

Et bien sûr, le code que j'ai collé ici provient de archive.php où se trouve mon URL:

http://localhost/project_name/date/2014/01/25/
1
Mayeenul Islam

L'argument 'date_query' prend une option supplémentaire qui est 'relation' et peut être AND ou OR.

Si nous considérons la relation OR votre code, qui utilise exactement la même date pour 'avant' et 'après' avec 'inclusive' défini sur true, doit renvoyer tous vos posts: posts avant une date + posts après cette date + posts à cette date .

Si nous considérons la relation AND, elle peut être résumée dans post_date >= date && post_date <= date et que c'est vrai pour la date elle-même, mais il y a probablement quelque chose sur la classe de requête de date (je n'ai pas creusé dans le noyau) qui empêche une telle requête, cela pour être honnête, ça n'a pas de sens pour moi.

La raison est simple: si vous souhaitez interroger une date spécifique que vous n'avez pas du tout besoin d'utiliser après/avant, créez simplement un tableau avec l'année, le mois et le jour que vous souhaitez afficher.

$args = array(
  'date_query' => array(
    array(
      'year'  => 2012,
      'month' => 12,
      'day'   => 12,
    ),
  ),
);
$query = new WP_Query( $args );

Le code ci-dessus est tiré du deuxième exemple pour les paramètres de requête de date dans Codex .

2
gmazzap