WordPress Yönetici Tablolarını Özelleştirme: Başlarken

Yayınlanan: 2021-01-25

WordPress kullanan herkes, Sayfalar ve Gönderiler gibi tüm temel genel bakış alanlarında görünen WordPress Yönetici Tablolarına aşina olacaktır. WordPress genelinde bu tür tablolar için aynı biçim kullanılır, bu da bunları kullanmakta hızla ustalaştığınız anlamına gelir. Ancak WordPress Yönetici Tablolarını değiştirebileceğinizi ve görüntülenen bilgileri değiştirebileceğinizi veya kendi ekstra sütunlarınızı ekleyebileceğinizi biliyor muydunuz?

Bu yazımızda bunu nasıl yapabileceğinizi anlatacağız. Başlayalım!

Kancalar

Yönetici tablo verilerini göstermek için WordPress, WP_List_Table yerleşik Sınıfını genişletir. WP_List_Table Sınıfı, wp-admin/includes/class-wp-list-table.php dosyasında özel bir sınıf olarak tanıtılır. Özel sınıflar, geliştiriciler tarafından değil, yalnızca diğer çekirdek sınıflar ve işlevler tarafından kullanılması amaçlandığından özel olarak adlandırılır.

WordPress size yönetici tablolarını değiştirme olanağı sunar. Tablo sütunlarını değiştirmek için WordPress'in wp-admin/includes/class-wp-posts-list-table.php dosyasında sağladığı filtre kancalarından birini kullanmanız gerekir.

Bu dosyada, WP_Posts_List_Table Sınıfı, WP_List_Table Sınıfını genişletir ve yönetici tablolarını yazı tipine göre doldurmak için özelliklerini ve yöntemlerini yeniden tanımlar. Özel bir yazı tipi tablosunun sütunlarını değiştirmek istiyorsanız, yazılar tablosu için manage_posts_columns kancasını, sayfalar için manage_pages_columns ve Manage manage_{$post_type}_posts_columns kullanabilirsiniz.

Tablo verileri için varsayılan olarak kullanılan sütunlar da bu dosyada açıklanmıştır. 616. satır civarında $posts_columns dizisi tanıtılır ve aşağıdaki sütunlar eklenir:

  • Toplu işlemler için "cb" onay kutusu sütunu
  • Gönderi 'başlık' sütunu
  • Gönderi yazarı için 'yazar' sütunu
  • Gönderinin ait olduğu Kategoriler için 'kategoriler' sütunu
  • Gönderinin 'etiketler' sütunu
  • "Yorumlar" sütunu
  • Yayınlanan 'tarih' sütunu

Yönetici Tablolarına Özel Sütun Ekleme

Bir tabloya özel bir sütun eklemek, geliştiricilerin sıklıkla yapması gereken bir şeydir. Ek olarak, içeriği düzenlerken sütunlarınızı sıralayabilmek de çok kullanışlıdır. Gönderiler, sayfalar ve özel gönderi türleri için özel bir sütunun nasıl uygulandığını ve bu özel sütunları nasıl sıralanabilir hale getirebileceğimizi göstereceğiz.

Mesaj Listesi Tabloları

Örnek olarak, bir gönderinin en son ne zaman değiştirildiğini açıklayan bir sütunu nasıl ekleyebileceğimizi görelim. Özellikle çok sayıda gönderi içeren bir blog çalıştırıyorsanız ve her birinin en son ne zaman güncellendiğini kontrol edebilmek istiyorsanız, bu gerçekten yararlı bir özellik olabilir. Bunun nasıl uygulanabileceğini görelim.

Başlamak için, sütun başlığı adları dizisine yeni sütunun adını eklemeliyiz. class-wp-posts-list-table.php dosyasının 663. satırına daha yakından bakalım.

 if ( 'page' === $post_type ) { $posts_columns = apply_filters( 'manage_pages_columns', $posts_columns ); } else { $posts_columns = apply_filters( 'manage_posts_columns', $posts_columns, $post_type ); }

Kodun bu bölümünde, gönderiler listesi tablosunda değişiklik yapmak istediğimiz için manage_posts_columns filtresini kullanmamız gerektiği açıktır (bunun hakkında daha fazla bilgi için buraya bakın). Sütunun adını sütun başlıkları dizisine eklemek için aktif temamızın functions.php dosyasını düzenleyeceğiz ve bu kod parçasını ekleyeceğiz:

 add_filter('manage_posts_columns','add_custom_columns'); function add_custom_columns( $columns ) { $columns['last_modified'] = 'Last modified'; return $columns; }

Şimdi yönetici gönderileri listesi sayfasını yenilersek, fazladan sütunu görebiliriz. Bu aşamada bu sütunda herhangi bir veri bulunmayacaktır.

wordpress yönetici tabloları temel özelleştirme.

Bir sonraki adımda, WordPress'e sütunda hangi içeriğin görüntüleneceğini söylememiz gerekiyor. Bunu yapmak için, sütunların çıktısından sorumlu olan column_default genel işlevinin parçası olan manage_posts_columns eylemini kullanacağız. Bu eylem, yalnızca gönderiler gibi hiyerarşik olmayan gönderi türlerine karşılık gelir ve bunu 1258 satırında görebilirsiniz.

Burada içeriği doldurmak için yapacağımız şey, tüm özel sütunlar için bir switch ifadesi çalıştırmak ve başlık adı 'last_modified' olduğundan (yukarıdaki ilk adımımızda kaydettiğimiz gibi) içeriğimizi yansıtacağız. İçeriği yansıtmak için WordPress yerleşik get_post_field işlevini kullanacağız ve veritabanındaki wp_posts tablosundan herhangi bir sütun olabilecek istenen alanı döndüreceğiz. Bir arıza durumunda boş dize döndürür.

Böylece functions.php dosyasına aşağıdaki kodu ekleyeceğiz:

 add_action( 'manage_posts_custom_column','custom_columns_content', 10, 2 ); function custom_columns_content ( $column_id, $post_id ) { switch( $column_id ) { case 'last_modified': echo get_post_field('post_modified', $post_id); break; } }

Sayfayı bir kez daha yenileyerek bunun beklendiği gibi çalıştığını onaylayabilirsiniz.

İlk yayınından sonra hiç değiştirilmemiş olan ikinci gönderi için 'Son değiştirilme' değerinin, yayınlanma tarihiyle aynı olduğuna dikkat edin.

Sayfa Listesi Tablosu

Aynı şeyi sayfalar listesi tablosunda yapmak için, sütun başlığı adları dizisine aynı şekilde sütunun adını ekliyoruz. Bu seferki fark, aşağıda gösterildiği gibi manage_pages_columns kancasını kullanmamızdır:

 add_filter('manage_pages_columns','add_custom_page_columns'); function add_custom_page_columns( $columns ) { $columns['last_modified'] = 'Last modified'; return $columns; }

Ardından, daha önce kullandığımız manage_posts_custom_column yerine manage_pages_custom_column kancasını kullanarak içerikleri ekleyeceğiz.

 add_action( 'manage_pages_custom_column','custom_columns_content', 10, 2 ); function custom_columns_content ( $column_id, $post_id ) { switch( $column_id ) { case 'last_modified': echo get_post_field('post_modified', $post_id); break; } }

Yukarıdaki kodu functions.php dosyamıza ekledikten sonra, yönetici alanımızdaki Sayfa Yöneticisi tablosunu ziyaret ederek işlerin beklendiği gibi çalıştığını onaylayabiliriz, burada şimdi bir 'Son Değiştirilme' sütunu görmemiz gerekir.

Özel Posta Türü Tablosu

İlk önce, functions.php dosyamıza aşağıdaki kodu ekleyerek özel bir yazı tipi oluşturacağız:

 function my_custom_post_type() { register_post_type( 'mycpt', array( 'labels' => array( 'name' => __( 'Custom Post Types' ), 'singular_name' => __( 'Custom Post Type' ) ), 'public' => true, 'has_archive' => true, 'rewrite' => array('slug' => 'mycpt'), 'show_in_rest' => true, ) ); } add_action( 'init', 'my_custom_post_type' );

Yönetici menümüzde 'Özel Gönderi Türü' adlı yeni bir öğenin eklendiğini fark edeceğiz.

Özel gönderi türlerinin nasıl oluşturulduğunu bilmiyorsanız ve daha fazlasını öğrenmek istiyorsanız, özel gönderi türleri oluşturma ile ilgili makalemize göz atabilirsiniz.

Şimdi, Özel Yazı Tipi kurulumumuzu, içeriğiyle birlikte yeni sütun başlığımızı eklemeye devam edeceğiz. Daha önce belirtildiği gibi, bir CPT (Özel Gönderi Türü) durumunda özel sütunumuzu eklemek için manage_{$post_type}_posts_columns kullanmamız gerekir.

{$post_type} , bu durumda 'mycpt' olan register_post_type() işlevinin ilk argümanıyla aynı olmalıdır.

Dolayısıyla, sütun başlığımızı eklemek için functions.php dosyasında kullanacağımız kod parçası aşağıdaki gibi olacaktır:

 add_filter( 'manage_mycpt_posts_columns','add_mycpt_custom_columns'); function add_mycpt_custom_columns( $columns ) { $columns['last_modified'] = 'Last modified'; return $columns; }

Ve sütun içeriğini doldurmak için:

 add_action( 'manage_mycpt_posts_custom_column','fill_mycpt_posts_custom_column'); function fill_mycpt_posts_custom_column( $column_id, $post_id ) { switch( $column_id ) { case 'last_modified': echo get_post_field('post_modified', $post_id); break; } }

Sonuçlar şöyle bir şey olmalıdır:

Sütunları Sıralanabilir Yap

Sütunu sıralanabilir yapmak için hangi özel sütunların sıralanmasına izin verileceğini tanımlamamız gerekir. Bunu başarmak için, bir geri çağırma işleviyle manage_edit-{post-type}_sortable_columns filtresini kullanıyoruz.

Bu nedenle, her yazı tipi durumunda aynı kodu ekleyeceğiz (elbette benzersiz işlev adlarıyla).

Gönderiler için:

 add_filter( 'manage_edit-post_sortable_columns', 'sortable_post_columns' ); function sortable_post_columns( $columns ) { $columns['last_modified'] = 'Last modified'; return $columns; }

Sayfalar için:

 add_filter( 'manage_edit-page_sortable_columns', 'sortable_page_columns' ); function sortable_page_columns( $columns ) { $columns['last_modified'] = 'Last modified'; return $columns; }

Özel gönderi türümüz için (mycpt):

 add_filter( 'manage_edit-mycpt_sortable_columns', 'sortable_mycpt_posts_columns' ); function sortable_mycpt_posts_columns( $columns ) { $columns['last_modified'] = 'Last modified'; return $columns; }

Şimdi, Yönetici tablolarınızdan birini ziyaret ederseniz, özel sütunun başlığının bir bağlantı olarak görüntülendiğini görmelisiniz. Bunu tıklarsanız, değiştirilme tarihine göre sıralanmalıdır.

Sütunlar için Sıralamayı Devre Dışı Bırak

Bir sütunun sıralama özelliğini kaldırmak için onu diziden kaldırmamız yeterlidir. Örneğin, bunu 'tarih' sütunu için yapmak istersek, fazladan bir kod satırı ekleriz unset($columns['date']) . Bu şuna benzer:

Gönderiler için:

 add_filter( 'manage_edit-post_sortable_columns', 'sortable_post_columns' ); function sortable_post_columns( $columns ) { $columns['last_modified'] = 'Last modified'; unset($columns['date']); return $columns; }

Sayfalar için:

 add_filter( 'manage_edit-page_sortable_columns', 'sortable_page_columns' ); function sortable_page_columns( $columns ) { $columns['last_modified'] = 'Last modified'; unset($columns['date']); return $columns; }

Özel gönderi türümüz için (mycpt):

 add_filter( 'manage_edit-mycpt_sortable_columns', 'sortable_mycpt_posts_columns' ); function sortable_mycpt_posts_columns( $columns ) { $columns['last_modified'] = 'Last modified'; unset($columns['date']); return $columns; }

Şimdi uygun tabloyu ziyaret ederseniz, Tarih etiketinin artık tıklanabilir olmadığını (ve dolayısıyla bu sütunun artık sıralanamayacağını) fark edeceksiniz.

Bu noktada WordPress geliştiricilerinin kafasını karıştıran bir detayın altını çizmekte fayda var. Gönderiler, Sayfalar ve Özel Gönderiler için kullandığımız kancaları gösteren aşağıdaki tabloya bir göz atın.

wordpress yönetici tabloları kanca.

Sütunları sıralamak için kullandığımız kancaların aslında kalıbı takip etmediğini fark etmişsinizdir. Bunların sırasıyla manage_posts_sortable_columns , manage_pages_sortable_columns ve manage_mycpt_posts_sortable_columns olmasını beklersiniz. Ne yazık ki bu sadece kötü adlandırma meselesidir. Yine de kolay bir hatırlatma olarak böyle bir özet tablo tutmak çok yararlıdır.

Sütun Genişliğini Değiştirme

Bir sütunun genişliğini ayarlamak için, WordPress'in sağladığı ve CSS veya JS içeren tüm yönetici sayfaları için head bölümünde yürüttüğü admin_head eylem kancasını kullanacağız.

Örnek olarak, functions.php dosyasına aşağıdaki kodu girmeyi deneyin:

 add_action('admin_head', 'my_column_width'); function my_column_width() { echo '<style type="text/css">'; echo '.table-view-list.posts .column-title { width:120px !important; overflow:hidden }'; echo '</style>'; }

Burada, tüm yönetici tabloları için ortak olan başlık sütununun .column-title sınıfını ve .table-view-list.posts sınıflarını kullandık. Bunlar bir araya geldiğinde, CSS'nin yalnızca gönderiler listesi tablosunda uygulanmasını sağlar.

Aynı şeyi diğer Yönetici ekranlarımızda (Sayfalar gibi) gerçekleştirmek için bunun yerine table-view-list.pages .

Çözüm

WordPress Yönetici Tabloları sütunlarını değiştirmek söz konusu olduğunda birçok olasılık vardır. Gelecek makalelerde, birkaç örnek daha inceleyeceğiz ve Yönetici tablolarınızdan daha fazlasını elde etmek için kullanabileceğiniz bazı faydalı püf noktaları sunacağız!