为什么在这个WordPress循环中不能使用‘包含’呢?

时间:2014-04-07 作者:UzumakiDev

这看起来很简单,我有一个循环,可以从中加载帖子,包括当前帖子。

<?php
$categories = get_the_category();
foreach( $categories as $category ) {
  $catID[] = $category->cat_ID;
} 
$args = array(
    \'category__in\' = > $catID,
    \'category__not_in\' = > 1,
    \'posts_per_page\' = > 10,
    \'date_query\' = > array(
        array(
            \'before\' = > get_the_date()
        ),
        \'inclusive\' = > true, 
    )
);
$loop = new WP_Query($args);
while ($loop -> have_posts()) {
$loop -> the_post();
  get_template_part( \'sidebar-posts-template\' );
}
wp_reset_postdata();
?>
问题是它没有include 当前职位。为什么?

编辑:这个循环使用固定日期也不起作用,将从27日开始加载帖子,不包括28日。这个inclusive 日期应包括28日起的帖子。

$args = array(
    \'date_query\' = > array(
        array(
            \'after\' = > \'January 1st, 2013\',
            \'before\' = > array(
                \'year\' = > 2013,
                \'month\' = > 2,
                \'day\' = > 28, 
             ),
            \'inclusive\' = > true, 
        ), 
    ),
    \'posts_per_page\' = > -1, );
编辑2:这是我现在使用的循环。

$args = array(
    \'category__in\' => $catID,
    \'category__not_in\' => 1,
    \'posts_per_page\'=>10,
    \'date_query\' => array(
        array(
            \'before\' => get_the_date(),
            \'inclusive\' => true, 
        ),
    )
);
编辑3:

$args = array(
    \'posts_per_page\'=>10,
    \'date_query\' => array(
        array(
          \'before\'    => array(
         \'year\'  => 2013,
         \'month\' => 2,
         \'day\'   => 28,
           ),
          \'inclusive\' => true 
        ),
     )
);

2 个回复
最合适的回答,由SO网友:Chip Bennett 整理而成

编辑3现在,合并编辑1和编辑2:

\'date_query\' = > array(
    array(
        \'before\' = > strtotime( get_the_date() ),
        \'inclusive\' = > true, 
    )
)
编辑2您没有inclusive 参数在正确的数组中。

更改此项:

\'date_query\' = > array(
    array(
        \'before\' = > get_the_date()
    ),
    \'inclusive\' = > true, 
)
。。。对此:

\'date_query\' = > array(
    array(
        \'before\' = > get_the_date(),
        \'inclusive\' = > true, 
    )
)
编辑get_the_date() 函数必须在循环内部使用,因为它依赖于$post 全球的

这个get_the_date() 函数还返回日期格式的字符串,但date_query before 参数接受astrtotime()兼容字符串。

而不是这样:

\'before\' => get_the_date()
。。。尝试以下操作:

\'before\' => strtotime( get_the_date() )
原始答案inclusive 参数是WP_Query() date_query parameter, 并且必须在传递给的数组内部使用date_parameter. 请参阅法典中的用法示例:

$args = array(
    \'date_query\' => array(
        array(
            \'after\'     => \'January 1st, 2013\',
            \'before\'    => array(
                \'year\'  => 2013,
                \'month\' => 2,
                \'day\'   => 28,
            ),
            \'inclusive\' => true,
        ),
    ),
    \'posts_per_page\' => -1,
);
$query = new WP_Query( $args );

SO网友:UzumakiDev

我在使用get_the_date() 所以我最终得到了数据库中的发布日期。

<? php
global $post;
$postTime = $post -> post_date;
$args = array(
    \'category__in\' => $catID,
    \'category__not_in\' => 1,
    \'posts_per_page\' => 10,
    \'date_query\' => array(
array(
    \'before\' => $postTime,
    \'inclusive\' => true 
), ));
$loop = new WP_Query($args);
while ($loop -> have_posts()) {
    $loop -> the_post();
    get_template_part(\'sidebar-posts-template\');
}
wp_reset_postdata(); ?> 
重要的代码是

global $post;
$postTime = $post -> post_date;
变量$postTime 是什么制造的inclusive 工作

结束

相关推荐

Query date in wordpress loop

我目前有一个名为“事件”的自定义帖子类型。我根据这里的教程创建了这个http://tatiyants.com/how-to-use-wordpress-custom-post-types-to-add-events-to-your-site/. 我想查询日期,只显示日期即将到来的帖子,而不是过去的帖子。$event_date >= time然而,在教程中,他使用一个短代码显示结果。我正在尝试将其转换为标准wp循环,以便在索引中显示它。php。他在其短代码函数中使用以下内容:add_shortcode