gpt4 book ai didi

php - Wordpress - 按日期后的多个元值排序,仅显示今天之后的日期

转载 作者:搜寻专家 更新时间:2023-10-31 21:12:28 25 4
gpt4 key购买 nike

我有一些名为“日期”和“开始时间”的自定义字段,我想按我的自定义字段“日期”然后是“开始时间”对帖子进行排序。我有以下查询 - 如果有人能指出我哪里出错了,那就太好了。

我的查询如下:

编辑:第二个数组可以更改为任何内容——字段自身返回 0000 到 2359 之间的任何值——这是我需要在日期之后排序的值

所以我现在有我的查询返回这个

5 月 26 日星期日 - 开始时间:09005 月 26 日星期日 - 开始时间:13005 月 26 日星期日 - 开始时间:20005 月 26 日星期日 - 开始时间:1030

但我想这样:

5 月 26 日星期日 - 开始时间:09005 月 26 日星期日 - 开始时间:10305 月 26 日星期日 - 开始时间:13005 月 26 日星期日 - 开始时间:2000

$today = date("Ymd");
$args = array(
'post_type' => 'event',
'meta_query' => array(
array(
'key' => 'date',
'value' => $today,
'type' => 'numeric',
'compare' => '>'
),
array(
'key' => 'start_time',
'value' => array( 0, 2359 ),
'compare' => 'BETWEEN'
)
),
'orderby' => 'meta_value',
'meta_key' => 'date',
'order' => 'ASC',
'paged'=> $paged,
'posts_per_page'=> 12
);

更新

我可以使用 sql 查询让它工作:

<?php
$querystr = "
SELECT wposts.*
FROM $wpdb->posts wposts, $wpdb->postmeta wpostmeta, $wpdb->postmeta wpostmeta2
WHERE wposts.ID = wpostmeta.post_id
AND wposts.ID = wpostmeta2.post_id
AND wpostmeta.meta_key = 'date'
AND wpostmeta2.meta_key = 'start_time'
AND wposts.post_type = 'event'
AND wposts.post_status = 'publish'
ORDER BY wpostmeta.meta_value ASC, wpostmeta2.meta_value ASC
";$pageposts = $wpdb->get_results($querystr, OBJECT);
?>
<?php if ($pageposts): ?>
<?php global $post; ?>
<?php foreach ($pageposts as $post): ?>
<?php setup_postdata($post); ?>
// STUFF
<?php endforeach; ?>
<?php endif; ?>

但是,我无法让它只返回日期大于今天的帖子。

更新 2:

返回日期大于今天的帖子很简单:

<?php 
$today = date("Ymd");
$eventdate = get_field('date');
?>
<?php if($eventdate > $today) : ?>

最佳答案

一种快速(但笨拙)的方法是将您的 start_time 自定义字段更改为一个包含日期和时间的长数字:

YYYYMMDDhhmm

然后,如图所示here :

query_posts($query_string.'&meta_key=start_time&orderby=meta_value'); 

关于php - Wordpress - 按日期后的多个元值排序,仅显示今天之后的日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16417689/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com