根据自定义字段开始和结束日期进行查询

时间:2013-08-24 作者:passatgt

我有一个称为事件的自定义帖子类型,有两个自定义字段,开始日期和结束日期。这些字段使用时间戳存储在数据库中。我想基于这两个值创建一个自定义查询,以便列出指定日期/时间范围内的事件。我的代码是这样的:

$start_date = strtotime($_POST[\'start_date\']);
$end_date = strtotime($_POST[\'end_date\']);
$args = array(
    \'post_type\' => \'event\',
    \'posts_per_page\' => -1,
    \'orderby\' => \'title\',
    \'order\' => \'ASC\',
    \'meta_query\'=>array(
        \'relation\'=>\'AND\',
         array(
            \'key\' => \'event_start_date\',
            \'value\' => $start_date,
            \'compare\' => \'<=\',
            \'type\' => \'NUMERIC\'
         ),
         array(
            \'key\' => \'event_end_date\',
            \'value\' => $end_date,
            \'compare\' => \'>=\',
            \'type\' => \'NUMERIC\'
         )
     )
);
$events = new WP_Query($args);      
所以我使用了一个简单的数字meta\\u查询,因为我的所有值和键都存储在一个时间戳中。代码对我来说很好,但不知怎么的,这个查询中没有结果。以下是一个示例:

$star\\u date=1343779200$end\\u date=141212600

我的一篇事件帖子将这些值作为自定义字段:event\\u start\\u date=1375315200event\\u end\\u date=1377734400

因此,它应该至少给出一个结果,因为与event\\u start\\u date和event\\u end\\u date相比,start\\u date更小,end\\u date更高。

知道怎么了吗?

2 个回复
最合适的回答,由SO网友:Vinod Dalvi 整理而成

我认为您在元查询中使用了错误的比较运算符。“event\\u start\\u date”的值应为>=并且<;=对于“event\\u end\\u date”。

SO网友:jay praksh
$today2 = date(\'Ymd\');  
    $current_month = date(\'m\');
    $current_year = date(\'Y\');
    $today1 = $_GET[\'event_date\'];
    //echo $xx = substr($today1,0,4);

    $current_month = substr($today1,-4,2);
    $current_year = substr($today1,0,4);

    //echo \'get-->\'.$today1; 
    //$today = ($today1 == \'\' || NULL )? $today2 : $today1; 

    $args = array(

        \'post_type\' => \'aw_events\',
        \'posts_per_page\'  => $posts_per_page,
        \'paged\' => $paged,
        \'meta_query\'   => array( 
            //\'relation\' => \'AND\',              
            array(
                \'key\'   => \'event_start_date\',
                \'compare\'   => \'<=\',
                \'value\'   => $current_year.\'\'.$current_month.\'30\',

            ),
            array(
                \'key\'   => \'event_end_date\',
                \'compare\'   => \'>=\',
                \'value\'   => $current_year.\'\'.$current_month.\'01\',

            ),
        ),      

    );
结束

相关推荐

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

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

根据自定义字段开始和结束日期进行查询 - 小码农CODE - 行之有效找到问题解决它

根据自定义字段开始和结束日期进行查询

时间:2013-08-24 作者:passatgt

我有一个称为事件的自定义帖子类型,有两个自定义字段,开始日期和结束日期。这些字段使用时间戳存储在数据库中。我想基于这两个值创建一个自定义查询,以便列出指定日期/时间范围内的事件。我的代码是这样的:

$start_date = strtotime($_POST[\'start_date\']);
$end_date = strtotime($_POST[\'end_date\']);
$args = array(
    \'post_type\' => \'event\',
    \'posts_per_page\' => -1,
    \'orderby\' => \'title\',
    \'order\' => \'ASC\',
    \'meta_query\'=>array(
        \'relation\'=>\'AND\',
         array(
            \'key\' => \'event_start_date\',
            \'value\' => $start_date,
            \'compare\' => \'<=\',
            \'type\' => \'NUMERIC\'
         ),
         array(
            \'key\' => \'event_end_date\',
            \'value\' => $end_date,
            \'compare\' => \'>=\',
            \'type\' => \'NUMERIC\'
         )
     )
);
$events = new WP_Query($args);      
所以我使用了一个简单的数字meta\\u查询,因为我的所有值和键都存储在一个时间戳中。代码对我来说很好,但不知怎么的,这个查询中没有结果。以下是一个示例:

$star\\u date=1343779200$end\\u date=141212600

我的一篇事件帖子将这些值作为自定义字段:event\\u start\\u date=1375315200event\\u end\\u date=1377734400

因此,它应该至少给出一个结果,因为与event\\u start\\u date和event\\u end\\u date相比,start\\u date更小,end\\u date更高。

知道怎么了吗?

2 个回复
最合适的回答,由SO网友:Vinod Dalvi 整理而成

我认为您在元查询中使用了错误的比较运算符。“event\\u start\\u date”的值应为>=并且<;=对于“event\\u end\\u date”。

SO网友:jay praksh
$today2 = date(\'Ymd\');  
    $current_month = date(\'m\');
    $current_year = date(\'Y\');
    $today1 = $_GET[\'event_date\'];
    //echo $xx = substr($today1,0,4);

    $current_month = substr($today1,-4,2);
    $current_year = substr($today1,0,4);

    //echo \'get-->\'.$today1; 
    //$today = ($today1 == \'\' || NULL )? $today2 : $today1; 

    $args = array(

        \'post_type\' => \'aw_events\',
        \'posts_per_page\'  => $posts_per_page,
        \'paged\' => $paged,
        \'meta_query\'   => array( 
            //\'relation\' => \'AND\',              
            array(
                \'key\'   => \'event_start_date\',
                \'compare\'   => \'<=\',
                \'value\'   => $current_year.\'\'.$current_month.\'30\',

            ),
            array(
                \'key\'   => \'event_end_date\',
                \'compare\'   => \'>=\',
                \'value\'   => $current_year.\'\'.$current_month.\'01\',

            ),
        ),      

    );

相关推荐

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

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