Wordpress - Adding 'menu order' column to custom post type admin screen
OK - in the end turned out to be fairly simple - as I'd had some kind of mental block - menu_order
is a variable in the $post
object (thanks to @brady for reminding me of that).
@scribu's post on creating sortable column values then gives the rest.
So, assuming the custom post type is called header_text
, these are the functions and hooks that are needed:
Add a new column for the order
/**
* 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_header_text_post_columns', 'add_new_header_text_column');
Render the column values
/**
* 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');
Set the column to be sortable
/**
* 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');
It's been too long, but just for the record, you can display the 'menu order' option in the admin, just by including 'page-attributes' in the 'supports' option array. For example:
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
)
);