与当前日期比较时,通过多个元键查询帖子不起作用

Posted

技术标签:

【中文标题】与当前日期比较时,通过多个元键查询帖子不起作用【英文标题】:Query posts by multiple meta keys not working when comparing with current date 【发布时间】:2019-11-18 05:53:34 【问题描述】:

我正在编写一个代码来根据其他元值比较日期查询帖子元值,下面是我的代码,它忽略日期条件查询所有帖子:

我尝试使用“LEFT JOIN”语句没有成功

$查询字符串 = " 选择 DISTINCT m2.meta_value 作为 'appdata' 来自 $wpdb->帖子 内部连接 ​​$wpdb->postmeta m1 ON ($wpdb->posts.ID = m1.post_id AND m1.meta_key LIKE 'repeater_%_date' AND m1.meta_value > NOW()) 内部连接 ​​$wpdb->postmeta m2 ON ($wpdb->posts.ID = m2.post_id AND m2.meta_key LIKE 'repeater_%_appdata' AND m2.meta_value != '') WHERE $wpdb->posts.ID = m1.post_id "; $pageposts = $wpdb->get_results($querystr, ARRAY_A);

问题是这段代码查询具有日期元键的旧帖子和新帖子

注意: repeater_%_date 是 ACF 日期字段,将日期存储为 Ymd (20190708)

请问有什么解决办法吗?

【问题讨论】:

你试过用 WP_Query 代替吗? 是的,我试过了,但它比较慢,因为我有大约 2500 个帖子,wpdb get_results 即使检索所有帖子也快得多,我认为它是更好的解决方案,因为我只需要获得一个元值由同一 ACF 中继器中的另一个过滤器过滤。 $wpdb->posts.ID = m1.post_id AND m1.meta_key LIKE 'repeater_%_date' AND m1.meta_value > NOW()) 似乎这些行不正确,因为您在其中指定条件应该是除$wpdb->posts.ID = m1.post_id 之外的 where 子句。 【参考方案1】:
$get_featured_args3  = array(
              'post_type'  => 'post',
              'orderby'     => 'date',
              'order'       => 'DESC',
              'posts_per_page'=>-1,       
              'meta_query' => array(
                    'relation' ->'AND',
                    array(
                        'key'     => 'key1',
                        'value'   => 1,
                        'compare' => '=',
                    ),
                    array(
                        'key'     => 'key2',
                        'value'   => 1,
                        'compare' => '=',
                    ),
                ),
                'date_query' => array(
                    array(
                        'year' => date('Y'),

                    ),
                ),
            );
    $get_featured_results3 = new WP_Query( $get_featured_args3 );

    $posts = $get_featured_results3->posts;
    foreach($posts as $post)

    

【讨论】:

以上是关于与当前日期比较时,通过多个元键查询帖子不起作用的主要内容,如果未能解决你的问题,请参考以下文章

当前日期查询不起作用HQL

Firebase - 跨多个位置的原子写入不起作用

通过 PHP 显示时 MSSQL 查询中的日期转换不起作用

PHP比较运算符在MySQL条纹查询中不起作用

Codeigniter 日期比较 - 大于或小于日期时间字段不起作用

带有 Ajax 的 Jquery 日期选择器不起作用