我有一个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();
每天都要提供午餐和晚餐优惠,但有时只会显示午餐,但经过几次更新后,两者都会再次显示。
任何改进代码的方法都不会再发生这种情况了?感谢
答案 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);