按日期对我的活动日历排序

时间:2012-01-16 作者:Antoine

我目前正在WordPress上创建一个带有自定义帖子类型的活动日历。我正在为日期、描述等使用自定义字段。

现在我想按日期对事件进行排序。。所以-->

January 3, 2012
January 10, 2012
Feburary 1, 2012
....

3 个回复
SO网友:markcbain

我已经多次成功地使用了Jared的方法,尽管我同意Stephen Harris的答案现在也应该起作用了(但这是对WP\\U查询的最新补充,在我创建事件列表时不可用)。根据存储日期所使用的日期格式,您可能还需要使用以下内容来正确显示日期(如果您有PHP背景,这可能是最基本的,但这让我困惑了一段时间)。

<?php 
$course_start_date = get_post_meta($post->ID, \'start_date\', true);
$fixed_date = strtotime($course_start_date);
echo date(\'jS F, Y\' , $fixed_date) ;
?> 

SO网友:Jared

我使用它按自定义帖子类型中的元键和值降序对帖子进行排序:

global $wpdb;
$query_str = "
SELECT wposts.* 
FROM $wpdb->posts wposts, $wpdb->postmeta wpostmeta
WHERE wposts.ID = wpostmeta.post_id 
AND wpostmeta.meta_key = \'_sr_post_rating\' 
AND wposts.post_type = \'entry\' 
ORDER BY wpostmeta.meta_value DESC
";
$entries = $wpdb->get_results( $query_str, OBJECT );
但是,如果您不想使用$wpdb, 参见斯蒂芬·哈里斯的回答。它应该是一样的。

希望有帮助!

SO网友:Stephen Harris

要使用WordPress API,可以使用get_posts 并指定orderby“meta value”(其中指定meta键为关联日期的键)。假设您的帖子类型为“事件”,日期自定义字段为“日期”:

$events=get_posts( 
array ( \'post_type\' => \'event\', 
\'orderby\' => \'meta_value\', 
\'meta_key\' => \'date\' ) );
或使用WP\\u查询。。。

$query = new WP_Query( 
array ( \'post_type\' => \'event\', 
\'orderby\' => \'meta_value\', 
\'meta_key\' => \'date\' ) );
以上内容将返回所有“事件”(过去和未来),因此您可能还希望添加一个过滤器以仅获取未来事件。为此,请将以下条目添加到上述数组中:

\'meta_value\'=>\'YYYY-MM-DD\',
\'meta_compare\'=>\'>=\'
(假设日期以“YYY-MM-DD”格式存储。上述“YYY-MM-DD”应替换为该格式的今天日期,例如“2012-01-16”。

结束

相关推荐

Sort admin menu items

关于“的相关注释”Changing the Order of Admin Menu Sections?“,我正在寻找一种按字母顺序对WordPress管理区域的每个子部分中的条目进行排序的方法。目前,每当添加新插件时,其条目都会出现在“设置/工具/插件”下看似随机的位置,通常很难找到新的菜单项。(我已经有很多插件了,所以我的菜单很满。)由于我相当经常地添加和删除插件,所以我宁愿不需要不断进入设置页面来获取菜单排序插件并调整顺序。抱歉问了这么长的问题;我只是想弄清楚我在找什么。示例代替: S