如何根据其中一个自定义字段值‘Date’对自定义帖子进行排序?

时间:2012-02-29 作者:marctain

我使用这段php代码来显示Gig列表,这是一种自定义的post类型。我想按帖子的“时间”值排序,并忽略已经发生的演出。如何修改以下代码来实现这一点?

    <?php
$args2 = array(

    \'post_type\' => \'gig\',
    \'numberposts\' => -1
);
$gigs = get_posts($args2);
foreach ($gigs as $gig){
    echo \'<h2>\'.$gig->post_title.\'</h2><br />\';
    // for each custom fields you want.
    echo get_post_meta($gig->ID,\'_gigswhen\', true).\'</br>\';
    echo \'Time: \'.get_post_meta($gig->ID,\'_gigsstart_time\', true).\'-\'.get_post_meta($gig->ID,\'_gigsend_time\', true).\'<br />\';
}
?>
为了澄清一点,这里是我函数中的代码。php

    $config = array(
        \'id\' => \'gigs-info\',
        \'title\' => \'Gig Info\',
        \'pages\' => array(\'gig\'),
        \'context\' => \'normal\', 
        \'priority\' => \'high\', 
        \'fields\' => array(), 
        \'local_images\' => false,
        \'use_with_theme\' => true //change path if used with theme set to true, false for a plugin or anything else for a custom path(default false).
    );
    $my_meta = new AT_Meta_Box($config);

    //Add fields to your meta box
    $my_meta->addText($prefix.\'where\',array(\'name\'=> \'Where is the Gig \'));
    $my_meta->addDate($prefix.\'when\',array(\'name\'=> \'When is the Gig \'));
    $my_meta->addTime($prefix.\'start_time\',array(\'name\'=> \'When Does it Start \'));
    $my_meta->addTime($prefix.\'end_time\',array(\'name\'=> \'When Does it End \'));
    $my_meta->addText($prefix.\'with_who\',array(\'name\'=> \'With Who is the Gig \'));
    $my_meta->addTextarea($prefix.\'words\',array(\'name\'=> \'A few words on the gig \'));
    $my_meta->Finish();
}
?>
我使用的是一个定制的meta-box类文件,有人友好地指出了我。所以我不确定它是否保存为unix时间戳。。我对wordpress php编程有点陌生:)

2 个回复
SO网友:mor7ifer

如果您将gig时间作为unix时间戳输入(使用strtotime()), 然后您可以使用WP_Query\'smeta_value_numorderby 元素来设置顺序。您还可以使用WP_Query\'smeta_query 只获取日期在未来的帖子。

另一种方法是,如果你因为某种原因(可能你的日期已经确定)不能这样做,如果你得到了所有的工作,你可以根据strtotime() 你的元价值。这将是一个更重的实现性能方面的问题,所以如果可能的话,可以使用另一个。

SO网友:GhostToast

经过一点研究,我认为“取消发布”或使帖子过期的能力可能更适合你。其中很大一部分是,除非您的start\\u时间是Unix格式,否则WordPress实际上不知道如何将其解释为与“now”类似的内容。我假设您正在将其插入到类似于MM/DD/YYYY的内容中。

看看其中的一些插件,也许这会让你走上正确的方向。希望至少有一个支持自定义帖子类型。

http://wordpress.org/extend/plugins/search.php?q=expire

结束

相关推荐