Je souhaite utiliser l'attribut menu order
pour contrôler le classement d'un type d'article personnalisé destiné à un usage spécifique.
Il est assez facile d'ajouter ceci au CPT via supports => array('page-attributes')
, mais comment puis-je afficher la valeur d'ordre de menu sur l'écran de liste d'admin pour ce CPT?
OK - à la fin s’est avéré être assez simple - comme j’avais eu une sorte de blocage mental - menu_order
est une variable dans l’objet $post
(merci à @brady de me l'avoir rappelé).
@/scribu post sur la création de valeurs de colonne pouvant être triées donne ensuite le reste.
Donc, en supposant que le type de publication personnalisé s'appelle header_text
, voici les fonctions et les points d'ancrage nécessaires:
Ajouter une nouvelle colonne pour la commande
/**
* 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');
Rend les valeurs de colonne
/**
* 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');
Définit la colonne pour pouvoir être triée
/**
* 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');
Cela fait trop longtemps, mais juste pour l'enregistrement, vous pouvez afficher l'option 'ordre du menu' dans l'administrateur, en incluant simplement 'attributs de page' dans le tableau d'options 'prend en charge'. Par exemple:
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
)
);