2014-03-25 21 views
2

在Wordpress中,有沒有辦法讓自定義列按顯示值排序而不是meta_value?我的意思是說,我的元值是一個數字,但我已經使用一個現有的鉤子操縱了這個數字,因爲它是一個字符串。我想按字符串排序而不是數字。這是我現有的,工作代碼,會就好了排序它 - 它只是將不會按字母順序排列:WordPress的如何添加管理自定義列按顯示值排序

add_action('manage_resource_posts_custom_column', 'my_manage_resource_columns', 10, 2); 
function my_manage_resource_columns($column_name, $id) { 
    switch ($column_name) { 
    case 'type': 
     $id = get_the_ID(); 
     $par = get_field('resource_type',$id); 
     $type = get_field('singular_name',$par); 
     echo $type; 
      break; 
    default: 
     break; 
    } 
} 

add_filter("manage_edit-resource_sortable_columns", "my_last_modified_column_register_sortable"); 
function my_last_modified_column_register_sortable($columns) { 
    $columns["type"] = "type"; 
    return $columns; 
} 

add_filter("request", "sort_column_by_modified"); 
function sort_column_by_modified($vars){ 
    if (isset($vars["orderby"]) && "type" == $vars["orderby"] && $_GET['post_type']=='resource') { 
     $vars = array_merge($vars, array(
      'meta_key' => 'resource_type', 
      'orderby' => 'meta_value_num' 
     )); 
    } 
    return $vars; 
} 

所以你可以看到我添加了實際文本基於數值列名在數據庫中。它顯示正常。我只需要它可以通過該文本進行排序,而不是它所代表的值。有誰知道這是可能的/如何做到這一點?

以下是現在列的截圖。你可以看到,他們確實按類型分組,但其提前與ID

enter image description here

感謝的數字順序!

回答

0

如果您想對多個元值的列進行排序,您將爲排序算法使用meta_query參數。給出一個例子,說明您何時想要對多個參數進行排序。假設你有一個按季節和情節列出的電視節目列表。僅僅通過Episode進行排序會將所有的Episode 1放在一起等等,但是當按照Episode進行排序時,真正想要的還是按照季節劇集進行排序,因爲這對於管理員用戶來說更具可讀性和理解性。

要做到這一點,在sort_column_by_modified功能,具有

$vars = array_merge($vars, array(
     'meta_query' => array(
       array(
        'meta_key' => 'season', // the column name 
        'order_by_num' => 'meta_value_num' 
      ), 
       array(
        'meta_key' => 'episode', // the column name 
        'order_by_num' => 'meta_value_num' 
      ), 
     ) 
    )); 

更換

$vars = array_merge($vars, array(
     'meta_key' => 'resource_type', 
     'orderby' => 'meta_value_num' 
    )); 

對於其他類型的不爽,適當地調整你的meta_query。

相關問題