Panelleri düzenlemek için özel sütunların sırasını değiştirme


27

Bunun gibi özel bir sütun kaydettiğinizde:

//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;
}

Varsayılan olarak sağdaki sonuncusu olarak görünür. Siparişi nasıl değiştirebilirim? Yukarıdaki sütunu ilk veya ikinci sütun olarak göstermek istersem ne olur?

Şimdiden teşekkür ederim

Yanıtlar:


36

Temelde bir PHP sorusu soruyorsun, ama ben bunu cevaplayacağım çünkü bu WordPress bağlamında. Sizde kalmasını istediğiniz sütunun önüne sütununuzu ekleyerek, sütun dizisini yeniden oluşturmanız gerekir :

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;
}

evet sanırım bu daha kolay ve daha kolay bir yol olacak :) ama cevabımdaki fikri doğru anladım. güzel düşünce.
Bainternet

תיית אתרים - Sizinkini cevaplarken cevaplarımı yazmak üzereydim, bu yüzden cevaplarımız "postayla geçti" , tabiri caizse. Neyse, bunu çözmem biraz zaman aldı; ilk ihtiyacım olduğunda kesinlikle benim başıma gelmedi.
MikeSchinkel

Dikkat edilmesi gereken bir şey: başka bir eklenti yazar sütununu kaldırırsa ne olur? Kendi küçük resim sütununuz da kaybolur. isset($new['thumbnail'])Dönmeden önce bir çek yapabilirsin $new. Ayarlanmamışsa, örneğin sonuna ekleyin.
Geert

5

Özel yazı türlerine bile otomatik olarak sütun ekleyen WPML gibi eklentileriniz varsa, tablo başlığınızda karmaşık bir kod olabilir.

Kodu sütun tanımınıza kopyalamak istemezsiniz. Neden kimse bu konuda olsun ki?

Sadece önceden sağlanan, güzel bir şekilde biçimlendirilmiş ve sıralanabilir varsayılan sütunları genişletmek istiyoruz.

Aslında, bu yalnızca yedi kod satırıdır ve diğer tüm sütunları sağlam tutar.

# hook into manage_edit-<mycustomposttype>_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;
}

Bu yardımcı olur umarım..


3

nasıl bildiğim tek yol, kendi sütun dizinizi oluşturmaktır.

// 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'] = '<input type="checkbox" />';

        $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;
    }

ve normalde yaptığınız gibi bu fazladan eklenen sütunları işleyin

// 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
}

Bu yardımcı olur umarım


2

Bu birkaç SO cevabının bir birleşimidir, umarım birine yardım eder!

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'
    ] );
});

Buna array_splice()ihtiyacımız olduğu gibi özel anahtarları saklamayacağını buldum . array_insert()yapar.


1
Bu doğru cevap olmalı.
xudre
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.