按ACF日期自定义字段进行自定义查询筛选

时间:2017-06-07 作者:hammed

我正在使用自定义查询按日期范围筛选帖子,我阅读了文档并搜索了许多示例,但这段代码对我来说似乎是正确的,我不知道为什么它不起作用!请帮帮我,这让我很粗鲁:(

function my_pre_get_posts( $query ) {

    // do not modify queries in the admin
    if( is_admin() ) {

        return $query;

    }


    // only modify queries for \'event\' post type
    if( isset($query->query_vars[\'post_type\']) && $query->query_vars[\'post_type\'] == \'pubmed\' ) {

        if( isset($_GET[\'date_deb\'] ) && isset($_GET[\'date_fin\'] )  ) {

            $date_debut = strtotime("01-01-".$_GET[\'date_deb\']);
            $date_fin = strtotime("31-12-".$_GET[\'date_fin\']);

            $date_debut = date(\'Ymd\',$date_debut);
            $date_fin = date(\'Ymd\',$date_fin);

            //echo $date_debut->format("Y");
            $query->set( \'meta_query\' , array( 
                                            array(

                                                \'key\' => \'datecreated\',
                                                \'value\'   => array( $date_debut , $date_fin ),
                                                \'compare\' => \'BETWEEN\',
                                                \'type\'    => \'NUMERIC\',
                                            )
                        ));

        } 

    }

    // return
    return $query;

}

add_action(\'pre_get_posts\', \'my_pre_get_posts\');

1 个回复
SO网友:Picard

可能日期格式应该不同-例如:

        $date_debut = date(\'Y-m-d\',$date_debut);
        $date_fin = date(\'Y-m-d\',$date_fin);
我没有测试过这个,但是doc 表示:

仅当日期以YYYY-MM-DD格式存储并使用此格式测试时,“type”日期才与“compare”值一起使用。

结束

相关推荐

使用新的WP-Query()从循环中过滤后期格式;

嗨,我目前正在为我的博客构建一个主题。下面的代码指向最新的帖子(特色帖子)。因为这将有一个不同的风格比所有其他职位。然而我想过滤掉帖子格式:链接使用我在循环中定义的WP查询,因为它给我带来了更多的灵活性。我该怎么做呢? <?php $featured = new WP_Query(); $featured->query(\'showposts=1\'); ?> <?php while ($featured->have_post

按ACF日期自定义字段进行自定义查询筛选 - 小码农CODE - 行之有效找到问题解决它

按ACF日期自定义字段进行自定义查询筛选

时间:2017-06-07 作者:hammed

我正在使用自定义查询按日期范围筛选帖子,我阅读了文档并搜索了许多示例,但这段代码对我来说似乎是正确的,我不知道为什么它不起作用!请帮帮我,这让我很粗鲁:(

function my_pre_get_posts( $query ) {

    // do not modify queries in the admin
    if( is_admin() ) {

        return $query;

    }


    // only modify queries for \'event\' post type
    if( isset($query->query_vars[\'post_type\']) && $query->query_vars[\'post_type\'] == \'pubmed\' ) {

        if( isset($_GET[\'date_deb\'] ) && isset($_GET[\'date_fin\'] )  ) {

            $date_debut = strtotime("01-01-".$_GET[\'date_deb\']);
            $date_fin = strtotime("31-12-".$_GET[\'date_fin\']);

            $date_debut = date(\'Ymd\',$date_debut);
            $date_fin = date(\'Ymd\',$date_fin);

            //echo $date_debut->format("Y");
            $query->set( \'meta_query\' , array( 
                                            array(

                                                \'key\' => \'datecreated\',
                                                \'value\'   => array( $date_debut , $date_fin ),
                                                \'compare\' => \'BETWEEN\',
                                                \'type\'    => \'NUMERIC\',
                                            )
                        ));

        } 

    }

    // return
    return $query;

}

add_action(\'pre_get_posts\', \'my_pre_get_posts\');

1 个回复
SO网友:Picard

可能日期格式应该不同-例如:

        $date_debut = date(\'Y-m-d\',$date_debut);
        $date_fin = date(\'Y-m-d\',$date_fin);
我没有测试过这个,但是doc 表示:

仅当日期以YYYY-MM-DD格式存储并使用此格式测试时,“type”日期才与“compare”值一起使用。

相关推荐

使用新的WP-Query()从循环中过滤后期格式;

嗨,我目前正在为我的博客构建一个主题。下面的代码指向最新的帖子(特色帖子)。因为这将有一个不同的风格比所有其他职位。然而我想过滤掉帖子格式:链接使用我在循环中定义的WP查询,因为它给我带来了更多的灵活性。我该怎么做呢? <?php $featured = new WP_Query(); $featured->query(\'showposts=1\'); ?> <?php while ($featured->have_post