2012-11-01 13 views
0

我做了一個帖子類型爲「事件」,使用自定義字段「Datum」(瑞典語爲日期)。 我希望此字段的默認視圖按此字段排序。如何爲WordPress的帖子類型設置一個僞造排序

到目前爲止,我得到:

register_post_type(
       'events', 
       array(
         'labels' => array(
           'name' => __('Arrangemang'), 
           'singular_name' => __('Arrangemang') 
         ), 
         'supports' => array(
           'title', 
           'editor', 
           'custom-fields' 
         ), 
         'public' => true, 
         'has_archive' => true, 
         'query_var' => array(
           'post_type' => 'events', 
           'meta_key' => 'Datum', 
           'orderby' => 'meta_value', 
           'order' => 'ASC', 
         ), 
       ) 
     ); 

但訂購不到風度的工作,如果我對事件的檔案網頁上運行:print_r($wp_query->query_vars);我得到:

Array 
(
    [post_type] => events 
    [error] => 
    [m] => 0 
    [p] => 0 
    [post_parent] => 
    [subpost] => 
    [subpost_id] => 
    [attachment] => 
    [attachment_id] => 0 
    [name] => 
    [static] => 
    [pagename] => 
    [page_id] => 0 
    [second] => 
    [minute] => 
    [hour] => 
    [day] => 0 
    [monthnum] => 0 
    [year] => 0 
    [w] => 0 
    [category_name] => 
    [tag] => 
    [cat] => 
    [tag_id] => 
    [author_name] => 
    [feed] => 
    [tb] => 
    [paged] => 0 
    [comments_popup] => 
    [meta_key] => 
    [meta_value] => 
    [preview] => 
    [s] => 
    [sentence] => 
    [fields] => 
    [category__in] => Array 
     (
     ) 

    [category__not_in] => Array 
     (
     ) 

    [category__and] => Array 
     (
     ) 

    [post__in] => Array 
     (
     ) 

    [post__not_in] => Array 
     (
     ) 

    [tag__in] => Array 
     (
     ) 

    [tag__not_in] => Array 
     (
     ) 

    [tag__and] => Array 
     (
     ) 

    [tag_slug__in] => Array 
     (
     ) 

    [tag_slug__and] => Array 
     (
     ) 

    [meta_query] => Array 
     (
     ) 

    [ignore_sticky_posts] => 
    [suppress_filters] => 
    [cache_results] => 1 
    [update_post_term_cache] => 1 
    [update_post_meta_cache] => 1 
    [posts_per_page] => 100 
    [nopaging] => 
    [comments_per_page] => 50 
    [no_found_rows] => 
    [order] => DESC 
    [orderby] => wp_posts.post_date DESC 
) 

有我誤解的說法query_var for register_post_type 或爲什麼不按照我的要求排序列表?

回答

0

試圖對矯正檔案頁面,但只是endend了quering職位twise, 因此迷上了「parse_query」的信息添加的順序如果查詢是正確的, 可能需要定義正確的晚些時候會更好,但現在它可以正常工作,而quesy只運行一次。

add_action('parse_request', 'event_sort'); 

function event_sort($a) 
{ 
    if($a->query_vars AND count($a->query_vars) == 1 AND $a->query_vars['post_type'] == 'events') 
    { 
     $a->query_vars['meta_key'] = 'Datum'; 
     $a->query_vars['orderby'] = 'meta_value'; 
     $a->query_vars['order'] = 'ASC'; 
    } 
} 

之前我發現我parse_request使用parse_query:

add_action('parse_query', 'event_sort'); 

function event_sort($a) 
{ 
    if($a->query AND count($a->query) == 1 AND $a->query['post_type'] == 'events') 
    { 
     global $wp_query; 
     $wp_query->set('meta_key', 'Datum'); 
     $wp_query->set('orderby', 'meta_value'); 
     $wp_query->set('order', 'ASC'); 
    } 
} 
0

據我所知,query_var只能是一個布爾值,並且不處理自定義帖子類型的排序。解決方案是爲您的帖子類型創建一個自定義存檔頁面,並在那裏修改循環,以便該自定義帖子類型的存檔頁面始終按元值進行排序。

相關問題