Ajout de la colonne «Ordre du menu» à l'écran d'administration du type de message personnalisé
4 réponses
- votes
-
- 2012-03-01
OK - à lafin s'est avéré assez simple - commej'avaiseu une sorte deblocagemental -
Le message sur la création de valeurs de colonnetriables demenu_order
est une variable dans l'objet$post
(merci à @brady deme l'avoir rappelé).@ scribu donneensuite le reste.
Donc,en supposant que letype depublicationpersonnalisé s'appelle
header_text
,voici lesfonctionset les hooksnécessaires:Ajouter unenouvelle colonnepour 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_header_text_post_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 colonnepour qu'elle soittriable
/** * 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');
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');
-
Dans WP 3.1,manage_edit - $ {post_type} _columns a été remplacéparmanage _ $ {post_type} _posts_columns: [codex] (http://codex.wordpress.org/Plugin_API/Filter_Reference/manage_edit-post_type_columns)In WP 3.1, manage_edit-${post_type}_columns has been supplanted by manage_${post_type}_posts_columns: [codex](http://codex.wordpress.org/Plugin_API/Filter_Reference/manage_edit-post_type_columns)
- 2
- 2013-05-29
- ptriek
-
N'y a-t-il vraimentpasmoyen d'enfaire la commandepar défaut?Vous aimez lespages?Is there really just not way to make this the default ordering? Like Pages?
- 0
- 2013-09-03
- Howdy_McGee
-
Jemets àjour le codepourme conformer à WP 3.1+ commeindiquépar @codex.I update the code to comply with WP 3.1+ as @codex reported.
- 0
- 2020-01-11
- lepe
-
- 2012-11-23
Celafaittrop longtemps,maisjustepourmémoire,vouspouvez afficher l'option 'ordre dumenu' dans l'admin,simplementen incluant 'page-attributes' dans letableau d'options 'supports'.Parexemple:
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 ) );
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 ) );
-
Lapersonne quipose la question connaît déjà les «attributs depage».Ilne doitpas afficher la valeur de l'ordre despages de lamanière requise.The person posting the question is aware of 'page-attributes' already. It must not show the page order value in the way needed.
- 2
- 2012-11-23
- s_ha_dum
-
J'ai des attributs depage dans les supportspour letype depublicationpersonnalisé,ce qui ajoute un ordre demenu à labarre latérale lors de lamodification de l'un de cestypes depublicationpersonnalisés,mais lors de l'affichage de la liste detous les éléments dutype depublicationpersonnalisé dans wp admin,celane fonctionnepasafficher la colonne d'ordre desmenus.Y a-t-il autre chosenécessairepour lefaire apparaître?Sous les options d'écranpour la date des colonnesest la seule optionet quiest cochée.I have page-attributes in the supports for the custom post type, which does add menu order to the sidebar when editing one of those custom post types, but when viewing the list of all the items in the custom post type in wp admin it doesnt show menu order column. Is there something else required to get it to show? Under screen options for columns date is the only option and that is checked.
- 0
- 2019-09-20
- cchiera
-
@cchiera: Vous devez suivre la réponse acceptéepour afficher la colonne.Le simplefait d'ajouter des «attributs depage»ne semblepasfonctionner.@cchiera: You must follow the accepted answer in order to display the column. Just adding 'page-attributes' doesn't seems to work.
- 0
- 2020-01-11
- lepe
-
- 2020-04-27
@anu laisse-moi dans labonne direction,mais cen'estpas un codemoderne
Solutionmoderne & amp; & amp;travaillant sur WordPress 5.4
- ajouter une assistance
- colonne de registre
- afficher la valeur de la colonne
- rendre la colonneenregistréetriable/direpar quoielle doittrier
...
$MY_POST_TYPE = "flowers"; // just for a showcase // the basic support (menu_order is included in the page-attributes) add_post_type_support($MY_POST_TYPE, 'page-attributes'); // add a column to the post type's admin // basically registers the column and sets it's title add_filter('manage_' . $MY_POST_TYPE . '_posts_columns', function ($columns) { $columns['menu_order'] = "Order"; //column key => title return $columns; }); // display the column value add_action( 'manage_' . $MY_POST_TYPE . '_posts_custom_column', function ($column_name, $post_id){ if ($column_name == 'menu_order') { echo get_post($post_id)->menu_order; } }, 10, 2); // priority, number of args - MANDATORY HERE! // make it sortable $menu_order_sortable_on_screen = 'edit-' . $MY_POST_TYPE; // screen name of LIST page of posts add_filter('manage_' . $menu_order_sortable_on_screen . '_sortable_columns', function ($columns){ // column key => Query variable // menu_order is in Query by default so we can just set it $columns['menu_order'] = 'menu_order'; return $columns; });
Si vous êtesintéressé,commentferiez-vouspour créer une colonnetriable quin'estpasbasée sur une variable de requête debase,vousjoueriez autour dufiltre
request
comme décrit dans la documentationici: https://make.wordpress.org/docs/plugin-developer-handbook/10-plugin-components/custom-list-table-columns/# sortable-columns@anu let me to the right direction, however that is not a modern code
Modern solution && working on WordPress 5.4
- add support
- register column
- display column value
- make the registered column sortable / say by what it should sort
...
$MY_POST_TYPE = "flowers"; // just for a showcase // the basic support (menu_order is included in the page-attributes) add_post_type_support($MY_POST_TYPE, 'page-attributes'); // add a column to the post type's admin // basically registers the column and sets it's title add_filter('manage_' . $MY_POST_TYPE . '_posts_columns', function ($columns) { $columns['menu_order'] = "Order"; //column key => title return $columns; }); // display the column value add_action( 'manage_' . $MY_POST_TYPE . '_posts_custom_column', function ($column_name, $post_id){ if ($column_name == 'menu_order') { echo get_post($post_id)->menu_order; } }, 10, 2); // priority, number of args - MANDATORY HERE! // make it sortable $menu_order_sortable_on_screen = 'edit-' . $MY_POST_TYPE; // screen name of LIST page of posts add_filter('manage_' . $menu_order_sortable_on_screen . '_sortable_columns', function ($columns){ // column key => Query variable // menu_order is in Query by default so we can just set it $columns['menu_order'] = 'menu_order'; return $columns; });
If you are interested how would you make sortable column that is not based on some basic Query variable you would play around
request
filter as described in documentation here: https://make.wordpress.org/docs/plugin-developer-handbook/10-plugin-components/custom-list-table-columns/#sortable-columns -
- 2012-02-29
Vous devezenregistrer votre CPN auprès de:
'hierachical' => true
You have to register your CPT with:
'hierachical' => true
-
Celane vouspermet-ilpas simplement de spécifier unparentpour l'élément dans l'écran d'édition -je l'aiessayé,et celane fait aucune différencepour l'écran de listeDoesn't that just allows you to specify a parent for the item in the edit screen - I've tried it, and it makes no difference to the listing screen
- 0
- 2012-02-29
- anu
-
désolé,je ne savaispas que vous vouliez ajouter des colonnespersonnalisées à la liste ...peut-être que cela vous donne unpoint de départ: http://shibashake.com/wordpress-theme/add-custom-post-type-columnssorry, didn't realize you want to add custom columns to the list ... maybe this gives you a point to start:http://shibashake.com/wordpress-theme/add-custom-post-type-columns
- 1
- 2012-02-29
- ungestaltbar
Je souhaite utiliser l'attribut
menu order
pour contrôler l'ordre d'untype depublicationpersonnalisé qui sera utilisé dans unbut spécifique.Ilest assezfacile d'ajouter ceci au CPT via
supports => array('page-attributes')
mais commentpuis-jeexposer la valeur de l'ordre dumenu sur l'écran de liste d'administrationpour ce CPT?