订购邮寄我的元值m/d/y格式,并将年份作为包含值

时间:2012-12-07 作者:irvin

当前订单:

2013年1月1日2012年7月12日2012年8月12日


<2012年12月31日

2013年1月1日应最后出现我的代码:

$paged = ( get_query_var(\'paged\') ) ? get_query_var(\'paged\') : 1;
$today = date(\'m/d/Y\');
query_posts(array(
    \'post_type\' => \'post\',
    \'category_name\' => \'flavors\',
    \'paged\' => $paged,
    \'meta_key\' => \'flavor_date\',
    \'orderby\' => \'meta_value\',
    \'order\' => \'ASC\',
         \'meta_query\' => array(
        array(
        \'key\' => \'flavor_date\',
        \'value\' => date("m/d/Y", strtotime(\'-6 hours\')),
        \'compare\' => \'>=\',
        \'type\' => \'CHAR\'
        )
    )
));
if (have_posts()) :
while (have_posts()) : the_post();
使用的功能:

add_filter(\'posts_join\', \'new_join\' );
function new_join($pjoin){
    if(is_category()){
        global $wpdb;
        $pjoin .= "LEFT JOIN (
SELECT *
FROM $wpdb->postmeta
WHERE meta_key =  \'flavor_date\' ) AS metasort
ON $wpdb->posts.ID = metasort.post_id";
    }
    return ($pjoin);
}

 add_filter(\'posts_orderby\', \'new_order\' );
function new_order( $orderby ){
    global $wpdb;
    if(is_category()){
        $orderby = "metasort.meta_value ASC";
    }

    return $orderby;
}

1 个回复
SO网友:s_ha_dum

按人类日历顺序排序的唯一日期格式是“年/月/日”。分隔符应该无关紧要。如果您将日期保留为UNIX时间格式strtotime, 它们也会进行适当的排序。

我建议重新组织代码以匹配其中一种格式。我会更进一步,建议您使用unix时间。如果以UNIX时间格式保存这些值,则可以根据需要轻松显示它们。也就是说,只要使用date("m/d/Y", $unixtimeformatedstring) 显示时而不是保存时。

我知道unixtime很难阅读,但它加上可以操作它的PHP函数,在处理日期方面是一个奇迹(只要你过去不需要太多的日期:))

结束

相关推荐