Hinzufügen der Spalte "Menüreihenfolge" zum benutzerdefinierten Administratorbildschirm für Post-Typen
4 Antworten
- Stimmen
-
- 2012-03-01
OK - am Ende stellte sich heraus,dasses ziemlicheinfach war - daicheine Artmentale Blockade hatte -
menu_order
isteine Variableim$post
-Objekt ( danke an @brady,dermich daranerinnert hat).@ scribus Beitrag zum Erstellen sortierbarer Spaltenwerte gibt dann den Rest.
Angenommen,derbenutzerdefinierte Beitragstyp heißt
header_text
,sind dies die Funktionen und Hooks,diebenötigt werden:Fügen Sieeine neue Spaltefür die Bestellung hinzu
/** * 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');
Rendern Sie die Spaltenwerte
/** * 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');
Stellen Sie die Spalte soein,dass sie sortierbarist
/** * 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');
-
In WP 3.1 wurdemanage_edit - $ {post_type} _columns durchmanage _ $ {post_type} _posts_columnsersetzt: [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
-
Gibtes wirklich keine Möglichkeit,dies zur Standardbestellung zumachen?Mag Seiten?Is there really just not way to make this the default ordering? Like Pages?
- 0
- 2013-09-03
- Howdy_McGee
-
Ich aktualisiere den Code,um WP 3.1+ zuentsprechen,wie @codexberichtet.I update the code to comply with WP 3.1+ as @codex reported.
- 0
- 2020-01-11
- lepe
-
- 2012-11-23
Esist zu lange her,abernurfür den Datensatz können Sie die Option 'Menüreihenfolge'im Administrator anzeigen,indem Sieeinfach 'Seitenattribute'in das Optionsarray 'Unterstützungen' aufnehmen.Zum Beispiel:
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 ) );
-
Die Person,die die Frage stellt,kenntbereits die 'Seitenattribute'.Der Wert der Seitenreihenfolge darfnichtin dererforderlichen Weise angezeigt werden.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
-
Ich habe Seitenattributein den Unterstützungenfür denbenutzerdefinierten Beitragstyp,der der Seitenleistebeim Bearbeiteneines dieserbenutzerdefinierten Beitragstypeneine Menüreihenfolge hinzufügt,beim Anzeigen der Liste aller Elementeim benutzerdefinierten Beitragstypin wp adminjedochnichtMenüreihenfolge anzeigen.Istnochetwaserforderlich,damites angezeigt wird?Unter Bildschirmoptionenfür Spaltenist das Datum dieeinzige Option,die aktiviertist.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: Siemüssen der akzeptierten Antwortfolgen,um die Spalte anzuzeigen.Nur 'Seitenattribute' hinzuzufügen,scheintnicht zufunktionieren.@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 lässtmichin die richtige Richtung,aber dasist keinmoderner Code
Moderne Lösung & amp; & amp; Arbeiten an WordPress 5.4
- Unterstützung hinzufügen
- Spalte registrieren
- Spaltenwert anzeigen
- Machen Sie die registrierte Spalte sortierbar/sagen Sie,nach was sie sortieren soll
...
$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; });
Wenn Sieinteressiert sind,wie würden Sieeine sortierbare Spalteerstellen,dienicht aufeinergrundlegenden Abfragevariablenbasiert,würden Sie den Filter
request
herumspielen,wiein der Dokumentation hierbeschrieben: https://make.wordpress.org/docs/plugin-developer-handbook/10-plugin-components/benutzerdefinierte-list-tabellenspalten/# sortierbare spalten@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
Siemüssen Ihre CPN registrierenbei:
'hierachical' => true
You have to register your CPT with:
'hierachical' => true
-
Können Sie damitnichteinfachein übergeordnetes Elementfür das Elementim Bearbeitungsbildschirm angeben? Ich habees versucht,undesmacht keinen Unterschied zum ListenbildschirmDoesn'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
-
Entschuldigung,ich habenichtbemerkt,dass Sie der Listebenutzerdefinierte Spalten hinzufügenmöchten. Vielleichtgibt Ihnen dieseinen Ausgangspunkt: 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
Ichmöchte das Attribut
menu order
verwenden,um die Reihenfolgefüreinen benutzerdefinierten Beitragstyp zu steuern,derfüreinen bestimmten Zweck verwendet wird.Esisteinfachgenug,dies über
supports => array('page-attributes')
,aber wie kannich den Wert der Menüreihenfolge auf dem Bildschirmmit der Administratorlistefür dieses CPT anzeigen?