这是针对自定义 Wordpress 页面的,但我认为基本的数组原则应该适用。我以前没有使用过复杂的数组,所以有点迷茫,反复试验还没有奏效。
我有一个帖子数据库,每个帖子都有'shop'和'expired'的meta_key。'expired' 是一个日期(YYYY-MM-DD),用于告诉访问者帖子的内容何时过期,这个键是我正在尝试使用的。
如果帖子的“过期”日期早于今天,则会显示“优惠已过期”
如果“过期”日期在未来,则会显示“优惠将在 X 天后过期”(此脚本未在下面显示,不是必需的)
帖子按其“过期”日期(ASC)的顺序列出。问题是,当帖子过期时,我希望该帖子显示在最后而不是停留在顶部。
我目前看到的示例:
Post 1 | Expired 3 days ago
Post 2 | Expired 1 day ago
Post 3 | Expires in 2 days
Post 4 | Expires in 6 days
以及我想看到的(注意 X 后订单):
Post 3 | Expires in 2 days
Post 4 | Expires in 6 days
Post 2 | Expired 1 day ago
Post 1 | Expired 3 days ago
这是我尝试合并两者的数组代码
$postid = get_the_ID();
$meta1 = get_post_meta($postid, 'shop', true);
$paged = (get_query_var('paged')) ? get_query_var('paged') : 1;
$today = date('Y-m-d', time());
$args = array(
'post_type' => 'post',
'meta_query' => array(
array(
'key' => 'shop',
'value' => $meta1
)
),
'paged' => $paged,
'posts_per_page' => '5',
'meta_key' => 'expired',
'meta_value' => $today,
'meta_compare' => '>',
'orderby' => 'meta_value',
'order' => 'ASC'
);
$args2 = array(
'post_type' => 'post',
'meta_query' => array(
array(
'key' => 'shop',
'value' => $meta1
)
),
'meta_key' => 'expired',
'meta_value' => $today,
'meta_compare' => '<',
'orderby' => 'meta_value',
'order' => 'DESC'
);
$final = $args + $args2;
$query = new WP_Query( $final );
while ( $query->have_posts() ) : $query->the_post(); ?>
HTML FOR DISPLAYING POST
endwhile;
目前它似乎没有注意到 "$args2" 并且只显示 $args
我确信我的想法是正确的,需要创建两个数组并用“+”而不是 array_merge() 加入它们,但那是我无法进一步了解的地方。
有人可以请示一下吗?谢谢!