簡體   English   中英

如何在Wordpress外循環中對自定義字段日期進行排序

[英]How to sort custom field date in Wordpress outside loop

我正在嘗試按具有'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);

注意* 日期必須以美國格式輸入,即2009年2月21日,日期才能生效 *

希望有道理

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM