Alterar a ordem das colunas personalizadas para editar painéis

Quando você registra uma coluna personalizada assim:

//Register thumbnail column for au-gallery type add_filter('manage_edit-au-gallery_columns', 'thumbnail_column'); function thumbnail_column($columns) { $columns['thumbnail'] = 'Thumbnail'; return $columns; } 

por padrão, aparece como o último à direita. Como posso alterar a ordem? E se eu quiser mostrar a coluna acima como a primeira ou a segunda?

Agradeço antecipadamente

Solutions Collecting From Web of "Alterar a ordem das colunas personalizadas para editar painéis"

Você está basicamente perguntando uma pergunta do PHP, mas vou responder porque é no contexto do WordPress. Você precisa reconstruir a matriz de colunas, inserindo sua coluna antes da coluna da qual deseja que ela seja deixada :

 add_filter('manage_posts_columns', 'thumbnail_column'); function thumbnail_column($columns) { $new = array(); foreach($columns as $key => $title) { if ($key=='author') // Put the Thumbnail column before the Author column $new['thumbnail'] = 'Thumbnail'; $new[$key] = $title; } return $new; } 

Se você tiver plugins como o WPML que adiciona colunas automaticamente, mesmo para tipos de postagem personalizados, você pode ter um código complicado no header da tabela.

Você não deseja copiar o código para a definição da coluna. Por que alguém, para esse assunto?

Nós só queremos estender as colunas padrão já fornecidas, bem formatadas e classificáveis.

Na verdade, isso é apenas sete linhas de código, e mantém todas as outras colunas intactas.

 # hook into manage_edit-_columns add_filter( 'manage_edit-mycustomposttype_columns', 'mycustomposttype_columns_definition' ) ; # column definition. $columns is the original array from the admin interface for this posttype. function mycustomposttype_columns_definition( $columns ) { # add your column key to the existing columns. $columns['mycolumn'] = __( 'Something different' ); # now define a new order. you need to look up the column # names in the HTML of the admin interface HTML of the table header. # "cb" is the "select all" checkbox. # "title" is the title column. # "date" is the date column. # "icl_translations" comes from a plugin (in this case, WPML). # change the order of the names to change the order of the columns. $customOrder = array('cb', 'title', 'icl_translations', 'mycolumn', 'date'); # return a new column array to wordpress. # order is the exactly like you set in $customOrder. foreach ($customOrder as $colname) $new[$colname] = $columns[$colname]; return $new; } 

espero que isto ajude..

a única maneira que eu sei como é criar sua própria série de colunas

 // Add to admin_init function add_filter('manage_edit-au-gallery_columns', 'add_my_gallery_columns'); function add_my_gallery_columns($gallery_columns) { $new_columns['cb'] = ''; $new_columns['id'] = __('ID'); $new_columns['title'] = _x('Gallery Name', 'column name'); // your new column somewhere good in the middle $new_columns['thumbnail'] = __('Thumbnail'); $new_columns['categories'] = __('Categories'); $new_columns['tags'] = __('Tags'); $new_columns['date'] = _x('Date', 'column name'); return $new_columns; } 

e, em seguida, processe essas colunas adicionais adicionadas, como você normalmente faria

 // Add to admin_init function add_action('manage_au-gallery_posts_custom_column', 'manage_gallery_columns', 10, 2); function manage_gallery_columns($column_name, $id) { global $wpdb; switch ($column_name) { case 'id': echo $id; break; case 'Thumbnail': $thumbnail_id = get_post_meta( $id, '_thumbnail_id', true ); // image from gallery $attachments = get_children( array('post_parent' => $post_id, 'post_type' => 'attachment', 'post_mime_type' => 'image') ); if ($thumbnail_id) $thumb = wp_get_attachment_image( $thumbnail_id, array($width, $height), true ); elseif ($attachments) { foreach ( $attachments as $attachment_id => $attachment ) { $thumb = wp_get_attachment_image( $attachment_id, array($width, $height), true ); } } if ( isset($thumb) && $thumb ) {echo $thumb; } else {echo __('None');} break; default: break; } // end switch } 

Espero que isto ajude

A maneira mais fácil de alterar a ordem das colunas de administração do WordPress é usar o plugin Codepress Admin Columns . Ele permite que você reordene, adicione, remova e redimensione qualquer coluna – incluindo itens personalizados como o que você criou.

Este plugin é tão útil que eu o instale por padrão e realmente limpo minhas colunas de administração.

Esta é uma combinação de algumas respostas de SO, espero que ajude alguém!

 function array_insert( $array, $index, $insert ) { return array_slice( $array, 0, $index, true ) + $insert + array_slice( $array, $index, count( $array ) - $index, true); } add_filter( 'manage_resource_posts_columns' , function ( $columns ) { return array_insert( $columns, 2, [ 'image' => 'Featured Image' ] ); }); 

Descobri que array_splice() não manterá as chaves personalizadas como precisamos dela. array_insert() faz.