問題描述
我想使用 menu order 屬性來控制用於特定目的的自定義帖子型別的排序。
透過 supports => array('page-attributes')將其新增到 CPT 很簡單,但是如何在此 CPT 的管理列表螢幕上公開選單順序值?
最佳解決方案
好的 – 最終證明是相當簡單的 – 因為我有一些心理障礙 – menu_order 是一個變數在 $post 物件 (感謝 @brady 提醒我) 。
@ scribu 的 post on creating sortable column values 然後給其餘的。
因此,假定自定義帖子型別稱為 header_text,這些是需要的函式和鉤子:
為訂單新增新列
/**
* add order column to admin listing screen for header text
*/
function add_new_header_text_column($header_text_columns) {
$header_text_columns['menu_order'] = "Order";
return $header_text_columns;
}
add_action('manage_edit-header_text_columns', 'add_new_header_text_column');
渲染列值
/**
* show custom order column values
*/
function show_order_column($name){
global $post;
switch ($name) {
case 'menu_order':
$order = $post->menu_order;
echo $order;
break;
default:
break;
}
}
add_action('manage_header_text_posts_custom_column','show_order_column');
將列設定為可排序
/**
* make column sortable
*/
function order_column_register_sortable($columns){
$columns['menu_order'] = 'menu_order';
return $columns;
}
add_filter('manage_edit-header_text_sortable_columns','order_column_register_sortable');
次佳解決方案
它已經太久了,只是為了記錄,您可以在管理員中顯示’menu order’ 選項,只需將’page-attributes’ 包含在’supports’ 選項陣列中即可。例如:
register_post_type( 'columna',
array(
'labels' => array(
'name' => __( 'Columnas' ),
'singular_name' => __( 'Columna' ),
),
'supports' => array( 'title', 'thumbnail', 'excerpt', 'page-attributes' ),
'public' => true,
'has_archive' => false,
'menu_position'=>5
)
);
參考文獻
注:本文內容整合自 Google/Baidu/Bing 輔助翻譯的英文資料結果。如果您對結果不滿意,可以加入我們改善翻譯效果:薇曉朵技術論壇。