web-dev-qa-db-ja.com

Date_queryの何が問題になっていますか

WordPress 3.9 "Smith"です。私は 新しいArchiveページを実装しようとしています per の提案 @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);
}

Miloの提案でハードコードされた日付を動的にしますが、このハードコードではvar_dump($posts)empty配列を表示しています。

私はフォローしています Viper007Bond.comのチュートリアル on WP date_queryそしてJan25とJan22に投稿しました。 dayの値を22,24,25などから変更してみましたが、結果は空の配列です。

そしてもちろん私がここに貼り付けたコードは私のURLがあるarchive.phpからのものです:

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

'date_query'引数はANDまたはORであることができる 'relation'である追加のオプションを取ります。

'inclusive'をtrueに設定し、 'before'と 'after'にまったく同じ日付を使用する関係OR your codeを考慮すると、すべての投稿を返すはずです。日付より前の投稿+その日付以降の投稿+その日付の投稿。

関係ANDを考えれば、それはpost_date >= date && post_date <= dateで要約することができ、それは日付自体に当てはまりますが、おそらくそのような問い合わせを妨げる、正直なところ、日付問い合わせクラスに何かがあります(私はコアを掘り下げません)。意味がありません。

理由は簡単です。特定の日付を照会したいのであれば、前後に使用する必要がまったくない場合は、表示したい年、月、日の配列を作成するだけです。

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

上記のコードは、 Codex の日付クエリパラメータの2番目の例から引用したものです。

2
gmazzap