web-dev-qa-db-fra.com

Ajout de la colonne 'ordre du menu' à l'écran d'administration de type publication personnalisé

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?

31
anu

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');
46
anu

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
    )
);
5
Juan Salas