2013-08-02 226 views
0

我目前正在使用WooCommerce,一個WordPress的電子商務插件。 WooCommerce產品通過一種新的稱爲產品的後期類型獲得設置。我有以下的代碼,添加自定義列到編輯屏幕這篇文章類型:wordpress將自定義列添加到自定義帖子類型

add_filter('manage_edit-product_columns', 'my_edit_product_columns') ; 
function my_edit_product_columns($columns) { 
$columns = array(
    'myfield' => __('My field') 
); 
return $columns; 
} 

這工作得很好,但unfortunatley其添加的它作爲最後一列。有沒有辦法訂購專欄?我希望此列直接位於「價格列」後面

回答

1

$傳遞到您的函數的列my_edit_product_columns是所有現有列的數組。您可以替換整個事物或使用任何標準數組操作來更改列的順序列&。

例如,如果你想指定你會做一些這樣的列(從事件採取自定義後我用型):

$columns = array( 
       "cb" => "<input type=\"checkbox\" />", 
       "title" => "Event Name", 
       "event_date" => "Date", 
       "start_time"=>"Time", 
      ); 

所以,如果你簡單的print_r($列),看看有什麼它目前有,你可以手動重新排序它。

要在特定位置插入您的列在現有$列陣列中使用:

# Insert at offset 2 
$offset = 2; 
$newArray = array_slice($columns, 0, $offset, true) + 
     array('new_column_id' => 'New Column Name') + 
     array_slice($columns, $offset, NULL, true); 

看到這個線程要了解他們:array_splice() for associative arrays

// ADDED

我只是測試在本地使用稱爲產品的自定義帖子類型。這段代碼適合我。偏移量從第1列開始,因此爲了使我的新列成爲第二列,我將偏移設置爲2.

public function productsListColumns($columns){ 
    $columns = array( 
       "cb" => "<input type=\"checkbox\" />", 
       "title" => "Product", 
       "price" => "Price" 
      ); 
      $offset = 2; 
      $newArray = array_slice($columns, 0, $offset, true) + 
      array('new_column_id' => 'New Column Name') + 
      array_slice($columns, $offset, NULL, true); 
    return $newArray; 
} 
+0

感謝您的回答,我已經試過array_slice和列最終還是是最後一個? – danyo

+0

更新回答上面 – wunderdojo

+0

非常酷的答案 - 比試圖用jQuery破解這個更好 –

0

請檢查以下代碼。你只需要與TribeEvents更換您的文章類型:: POSTTYPE

add_filter('manage_' . TribeEvents::POSTTYPE . '_posts_columns', 'column_headers'); 
add_action('manage_posts_custom_column', 'custom_columns' , 10, 2); 

function column_headers($columns) 
{ 
    $columns['tickets-attendees'] = __('Attendees', 'tribe-events-calendar'); 
    return $columns; 
} 
function custom_columns($column_id, $post_id) { 

    if ($column_id == 'tickets-attendees') { 
     //echo $post_id; 
     $items = TribeEventsTickets::get_event_attendees($post_id); 
     $attendeeCount = count($items); 
     ?> 
     <a href = "edit.php?post_type=tribe_events&page=tickets-attendees&event_id=<?php echo $post_id; ?>"><?php echo $attendeeCount; ?></a> 

     <?php 

    } 
}  
相關問題