WP Query不会一直显示所有结果

时间:2014-07-29 06:02:02

标签: php wordpress wp-query

我有一个wp网站,第二天提供午餐和晚餐。优惠作为帖子输入,属于自己的类别(id = 4),并有两个自定义字段值: - menu_date - 帖子应该可见的日期 - menu_number - 如果午餐是1,如果晚餐是2

我使用此查询来获取我需要的帖子:

$args = array(
'post_type'  => 'post',
'cat' => 4,
'meta_key'=>'menu_number', 'orderby' => 'meta_value_num', 'order' => ASC );

$query = new WP_Query($args);

if ( $query->have_posts() ) {
while($query->have_posts()) {
    $query->the_post();

    $menu_date = get_post_custom_values( 'menu_date' );
    $menu_number = get_post_custom_values( 'menu_number' );
    $tommorow = date("dmY", time()+86400);

    if ( $tommorow == $menu_date[0] && has_post_thumbnail() ) {
         the_post_thumbnail('full', array( 'class' => 'img-responsive' ) );
             if ($menu_number[0] == 1) {
                 <a href="#">Get Lunch!</a>
             }
             else{
                 <a href="#">Get Dinner!</a>
             }
         the_title();
    }
}
} wp_reset_query();

每天都要提供午餐和晚餐优惠,但有时只会显示午餐,但经过几次更新后,两者都会再次显示。

任何改进代码的方法都不会再发生这种情况了?感谢

3 个答案:

答案 0 :(得分:0)

  

每天都要提供午餐和晚餐优惠,但有时只会显示午餐,但经过几次更新后,两者都会再次显示。

这可能与您明天的日期计算方式有关:

$tommorow = date("dmY", time()+86400);

尝试将其更改为如下,看看是否可行:

$tomorrow = date("dmY", strtotime("tomorrow"));

答案 1 :(得分:0)

尝试在循环中同时检查两者。像这样:

        `if ($menu_number[0] == 1) {
             <a href="#">Get Lunch!</a>
         }
         if ($menu_number[0] == 2){
             <a href="#">Get Dinner!</a>
         }`

如果这没有解决问题,请尝试调试$ menu_number和$ menu_date的值。看看会发生什么。

编辑:

元查询args应该是这样的:$ tommorrow在你的args中是不正确的

'meta_query' => array(
    array(
        'key' => 'menu_date',
        'value' => $tommorow
    )
)

对于日期查询:

$tomorrow = date("dmY", time()+86400);
$args = array(
    'date_query' => array(
        array(
            'year'  => $tomorrow["year"],
            'month' => $tomorrow["mon"],
            'day'   => $tomorrow["mday"],
        ),
    ),
);

这将为您提供明天的帖子。

答案 2 :(得分:0)

我明白了:

我改变了这样的$ args。我在这里添加了menu_date,我只检索具有正确值的帖子。

$args = array(
'post_type'  => 'post',
'cat' => 4,
 'meta_query' => array(
                array(
                    'key' => 'menu_date',
                    'value' => "$tommorow"
                )),
 'meta_key'=>'ordine_meniu', 'orderby' => 'meta_value_num', 'order' => ASC ); 

 $query = new WP_Query($args);