按Unix时间中的自定义日期查询

时间:2012-08-21 作者:kschaeffler

实际上,我的数据库中有一个在UNIX时间中注册的自定义日期,如下所示:

meta\\u键:custom\\u datemeta\\u值:1322697600

元键的类型是一个长文本

我想根据此custom\\u日期的年份检索特定帖子

我想要这样的东西:

$args = array(
    \'paged\' => $paged,
    \'posts_per_page\' => 10,
    \'post_type\' => \'custom\',
    \'post_status\' => \'publish\',
    \'meta_query\' => array(
    array(
                \'key\'=>\'custom_date\',
                \'value\'=> \'2010\'
            )
);
有人知道如何在查询中转换自定义日期并仅获取该日期的年份吗?

1 个回复
最合适的回答,由SO网友:xyz 整理而成

PHP有一个内置的date() 设置日期对象格式的函数。在您的情况下,您可以按如下方式使用它:

echo date(\'Y\', 1322697600);
由于您使用这些查询参数来构建一个帖子数组,并且您希望专门对其进行过滤,因此我建议您构建一个函数,根据所需的年份过滤器触发循环。

我以前使用过类似的函数,如下所示:

function check_post_date($filter_year) {

    // Load the custom_date meta field
    $custom_date = get_post_meta( get_the_ID(), \'custom_date\', true );

    // Turn it into a string that only displays the year
    $custom_date_year = date(\'Y\', $custom_date);

    // If the years equal, return true.
    if( $custom_date_year == $filter_year ) {
         return true;           
    } else {
        return false;
    }
}
通过此操作,您可以操纵循环是否为此帖子运行。

例如,如果要在2010年进行筛选,可以这样编写循环:

<?php if (have_posts()) : while (have_posts()) : the_post(); ?>

    <?php if check_post_date(\'2010\') : ?>

       <!-- Your single post code goes here! -->

    <?php endif; ?>

<?php endwhile; endif; ?>

结束

相关推荐

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

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