Php 获取按每篇文章的多个元数据项排序的自定义wp文章

Php 获取按每篇文章的多个元数据项排序的自定义wp文章,php,mysql,wordpress,custom-post-type,Php,Mysql,Wordpress,Custom Post Type,我们有一个wordpress网站,在那里我们想显示一个正在进行或已经开始但尚未完成的事件列表 因此,我们制作了一个名为“事件”的自定义post类型。每个事件都有自己的wp_posts.ID,并链接到2(或更多)个wp_postta行。其中一行的键值包含“event_start”(键)和一个unix时间戳”作为值。另一行包含几乎相同的值,但随后包含“event_end”和一个时间戳作为值 现在,我们要执行一个查询,按照startdate对所有活动和提交事件进行排序 我们尝试了一些不同的方法,我认为

我们有一个wordpress网站,在那里我们想显示一个正在进行或已经开始但尚未完成的事件列表

因此,我们制作了一个名为“事件”的自定义post类型。每个事件都有自己的wp_posts.ID,并链接到2(或更多)个wp_postta行。其中一行的键值包含“event_start”(键)和一个unix时间戳”作为值。另一行包含几乎相同的值,但随后包含“event_end”和一个时间戳作为值

现在,我们要执行一个查询,按照startdate对所有活动和提交事件进行排序

我们尝试了一些不同的方法,我认为这很接近,但没有成功,因为当我们执行子选择查询时wp_post.ID不可用

    $sql = "
        SELECT
            $wpdb->posts.*, (
                    SELECT 
                        $wpdb->postmeta.meta_value
                    FROM 
                        $wpdb->postmeta
                    WHERE
                        $wpdb->posts.ID = $wpdb->postmeta.post_id
                    AND 
                        $wpdb->postmeta.meta_key = 'event_start'
                    ) AS event_start,
                    (
                    SELECT 
                        $wpdb->postmeta.meta_value
                    FROM 
                        $wpdb->postmeta
                    WHERE
                        $wpdb->posts.ID = $wpdb->postmeta.post_id
                    AND 
                        $wpdb->postmeta.meta_key = 'event_end'
                    ) AS event_end
        FROM
            $wpdb->posts, $wpdb->postmeta
        WHERE (
            event_start > ".time()."

        )
        OR (
            event_start < ".time()."
            AND
            event_end > ".time()."
        )
        ORDER BY 
            event_start ASC
        LIMIT 0,3";
$sql=”
挑选
$wpdb->posts.*(
挑选
$wpdb->postETA.meta_值
从…起
$wpdb->postmeta
哪里
$wpdb->posts.ID=$wpdb->postETA.post\u ID
及
$wpdb->postETA.meta\u key='event\u start'
)随着活动的开始,
(
挑选
$wpdb->postETA.meta_值
从…起
$wpdb->postmeta
哪里
$wpdb->posts.ID=$wpdb->postETA.post\u ID
及
$wpdb->postETA.meta\u key='event\u end'
)当事件结束时
从…起
$wpdb->posts$wpdb->postmeta
在哪里(
事件\u开始>“.time()
)
或(
事件_开始<.time()
及
事件结束>“.time()。”
)
订购人
事件启动ASC
限制为0,3”;
谁能帮我们弄清楚如何获取这些数据?我们是否应该删除所有代码并重新开始

Thnx!

您可以使用和

这对你有帮助