我正试图通过具有'yyyy/mm/dd'格式的自定义字段对页面进行排序。我遇到的问题是,无论我怎么尝试,我总是能按照标题的字母顺序获得列表。
无论如何要做一个查询外的循环,并有页面在排序顺序返回?
$args = array(
'parent' => 462,
'child_of' => 462,
'sort_column' => 'Date',
'post_status' => 'publish',
'sort_order' => 'ASC'
);
$pageposts = get_pages($args);
我也试过这个,但我仍然不能让它工作。
$args = array(
'meta_key' => 'Date',
'orderby' => 'meta_value_num',
'parent' => 462,
'child_of' => 462,
'post_status' => 'publish',
'order' => 'ASC'
);
$pageposts = get_pages($args);
我确实尝试了meta_value以及meta_value_num。我完全迷失了,我不明白为什么我不能弄明白这个。提前感谢大家的帮助。我知道这可能是对大多数人的补救,所以我真的很感激。
您需要使用自定义查询,因为wordpress
get_pages,get_posts
将将meta_value
排序为字符串,因此如果您使用上述函数,您的字段将被视为字符串而不是date
,这里是您可以在查询中进一步添加条件的示例
global $wpdb;
$query = "
SELECT wp.*
FROM $wpdb->posts wp, $wpdb->postmeta wm
WHERE wp.ID = wm.post_id
AND wm.meta_key = 'Date'
AND wp.post_status = 'publish'
AND wp.post_type = 'page'
AND wp.post_parent = '462'
ORDER BY STR_TO_DATE(wm.meta_value, '%m/%d/%Y') ASC
";
$pages = $wpdb->get_results($query, OBJECT);
注*日期必须以美国格式输入,即21/02/2009 *
希望有意义
只使用"sort_column"=>"post_date",