我需要有一个归档小工具,组织和显示使用自定义日期字段的自定义帖子类型

时间:2014-04-16 作者:Kinoian Web

我在找到了一个方便的插件http://www.redletterdesign.net/wp/cpt-archive/index.php 用于使用自定义帖子类型生成日历存档。我的问题是,我需要它来组织这些帖子,不是按帖子的发布日期,而是按自定义日期字段(使用Unix时间)。自定义发布类型是使用用户输入(未来)日期的自定义事件日历。你知道我会怎么做吗?

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

是的。您可以将meta\\u查询参数添加到查询帖子的方法中,例如WP\\u query。下面这篇文章获取两个日期之间的自定义帖子类型(这是由“高级自定义字段”插件创建的自定义字段),并在其中一个日期排序:

$args = array(
    \'post_type\' => \'event\',
    \'posts_per_page\' => \'-1\',
    \'post_status\' => array( \'private\',\'publish\' ),

    \'meta_key\' =>\'start_date\',
    \'orderby\' => \'meta_value_num\',
    \'order\' => \'asc\',

    \'meta_query\' => array(
        \'relation\' => \'OR\',
        array(
            \'key\' => \'end_date\',
            \'value\' => array(strtotime(\'20130101\'),strtotime(\'20140101\')),
            \'compare\' => \'BETWEEN\',
            \'type\' => \'NUMERIC\'
        ),
        array(
            \'key\' => \'start_date\',
            \'value\' => array(strtotime(\'20130101\'),strtotime(\'20140101\')),
            \'compare\' => \'BETWEEN\',
            \'type\' => \'NUMERIC\'
        )
    )
);
$search = new WP_Query($args);

if ( $search->have_posts() ):

    setlocale(LC_ALL, \'nl_NL.UTF-8\');

    while ( $search->have_posts() ) : $search->the_post();

        $start_date = get_post_meta(get_the_ID(), \'start_date\', true);
        $end_date = get_post_meta(get_the_ID(), \'end_date\', true);
        $start = strftime( \'%A %e %B %Y\', strtotime( $start_date ) );
        $end = strftime( \'%A %e %B %Y\', strtotime( $end_date ) );


        echo "$start ($start_date) - $end ($end_date) <br />";

    endwhile;
endif;
另请参见此处:http://codex.wordpress.org/Class_Reference/WP_Query#Custom_Field_Parameters

结束