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

33

Je souhaite utiliser l' menu orderattribut pour contrôler le classement d'un type d'article personnalisé destiné à un usage spécifique.

Il est assez facile d’ajouter cela au CPT, supports => array('page-attributes')mais comment puis-je afficher la valeur de la commande de menu sur l’écran de liste d’administrateur pour ce CPT?

anu
la source

Réponses:

48

OK - à la fin s'est avéré être assez simple - comme j'avais eu une sorte de blocage mental - menu_orderest une variable dans l' $postobjet (merci à @brady de me l'avoir rappelé).

Le post de @ scribu sur la création de valeurs de colonne pouvant être triées donne le reste.

Ainsi, en supposant que le type de publication personnalisé soit appelé header_text, voici les fonctions et les raccords 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');

Rendre les valeurs de la 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éfinir la colonne pour être triable

/**
* 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');
anu
la source
Dans WP 3.1, manage_edit - $ {post_type} _columns a été supplanté par manage_ $ {post_type} _posts_columns: codex
ptriek
N'y a-t-il vraiment pas moyen d'en faire la commande par défaut? Vous aimez les pages?
Howdy_McGee
7

Cela fait trop longtemps, mais juste pour l'enregistrement, vous pouvez afficher l'option 'ordre du menu' dans l'admin, 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
    )
);
Juan Salas
la source
2
La personne qui pose la question connaît déjà les «attributs de page». Il ne doit pas afficher la valeur de l'ordre des pages de la manière requise.
s_ha_dum
J'ai des attributs de page dans les supports pour le type de message personnalisé, ce qui ajoute un ordre de menu à la barre latérale lors de la modification de l'un de ces types de message personnalisé, mais lors de l'affichage de la liste de tous les éléments du type de message personnalisé dans wp admin, cela ne fonctionne pas. affiche la colonne d'ordre du menu. Y a-t-il autre chose requis pour le faire apparaître? Sous les options d'écran pour les colonnes, la date est la seule option qui est cochée.
cchiera
-3

Vous devez enregistrer votre CPT auprès de:

'hierachical' => true
ungestaltbar
la source
Est -ce pas juste vous permet de spécifier un parent de l'élément dans l'écran d'édition - je l' ai essayé, et il ne fait aucune différence à l'écran la liste
anu
1
désolé, vous ne réalisez pas que vous souhaitez ajouter des colonnes personnalisées à la liste ... peut-être que cela vous donne un point de départ: shibashake.com/wordpress-theme/add-custom-post-type-columns
ungestaltbar