0

我正在尝试按具有“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。我完全迷失了,我真的不明白为什么我无法弄清楚这一点。提前感谢大家的帮助。我知道这对大多数人来说可能是补救措施,所以我真的很感激。

4

2 回答 2

1

您需要使用自定义查询,因为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 才能使用*

希望有意义

于 2013-06-18T05:33:54.607 回答
0

只需使用 'sort_column' => 'post_date',

于 2013-06-18T04:06:00.330 回答