Varsayılan Yönetici Ekranı seçeneklerini ve Metabox Siparişini Ayarla


28

Umutsuzca varsayılan "ekran seçenekleri" ve metabox sıralarını işlev.php dosyası aracılığıyla ayarlamak için bir yol (herhangi bir şekilde) arıyorum. Burada sağlayabilecekleri yardımı olan var mı?


2014 Güncellemesi: Meta kutularını yeniden düzenlemek isteyenler için, aşağıdaki Nabil'in cevabına bakınız .
rinogo,

Yanıtlar:


23

Yazı düzenleme sayfalarındaki meta kutuların sırasını ayarlama

Meta kutuları kaldırmanız ve tekrar istediğiniz sırayla eklemeniz gerekir.

Meta kutuları devre dışı bırakmak için: (ihtiyaçlarınıza göre özelleştirin, işlevlerin ilk parametresi olarak hangi adı kullanmanız gerektiğini bilmek için html kodundaki meta kutu kimliğine bakın)

function my_remove_meta_boxes() {

    remove_meta_box('postcustom', 'post', 'core');

    remove_meta_box('commentsdiv', 'post', 'core');

    ...
}

add_action( 'admin_menu', 'my_remove_meta_boxes' );

Bunları çıkardıktan sonra, yeni konumlara eklemek için add_meta_box işlevini kullanabilirsiniz: http://codex.wordpress.org/Function_Reference/add_meta_box . Meta kutularının sırası, add_meta_box işlevini çağırdığınız sıraya bağlıdır. Örn: aşağıdaki kod parçacığında, yorumlar meta kutusu özel alanlar meta kutusundan önce olacaktır.

function my_add_meta_boxes( $post_type, $post ) {
    if ( ('publish' == $post->post_status || 'private' == $post->post_status) && post_type_supports($post_type, 'comments') )
        add_meta_box('commentsdiv', __('Comments'), 'post_comment_meta_box', $post_type, 'normal', 'core');

    if ( post_type_supports($post_type, 'custom-fields') )
        add_meta_box('postcustom', __('Custom Fields'), 'post_custom_meta_box', $post_type, 'normal', 'core');

    ...
}

add_action( 'add_meta_boxes', 'my_add_meta_boxes' );

Wp-admin / edit-form-advanced.php dosyasına bakmak isteyebilirsiniz.

Gönderi listesi sayfasında hangi sütun başlığının gösterileceğinin ayarlanması

_ ~ $ Post_type} _posts_columns süzgecini yönet kullanmanız gerekir. Örn: aşağıdaki kod parçası, yorumlar sütununu kaldıracak.

function my_remove_columns( $posts_columns ) {
    unset( $posts_columns['comments'] );

    return $posts_columns;
}

add_filter( 'manage_post_posts_columns', 'my_remove_columns' );

Posta listesi sayfasında gösterilecek varsayılan sonuçların ayarlanması

'Edit _ {$ post_type} _per_page' ve 'edit_posts_per_page' filtrelerini kullanın.

function my_edit_post_per_page( $per_page, $post_type ) {

    $edit_per_page = 'edit_' . $post_type . '_per_page';
    $per_page = (int) get_user_option( $edit_per_page );
    if ( empty( $per_page ) || $per_page < 1 )
        $per_page = 1;

    return $per_page;
}

add_filter( 'edit_posts_per_page', 'my_edit_post_per_page' );

Belirli bir yayın türünü hedeflemek için:

  • add_filter( 'edit_{post type}_per_page', 'my_edit_post_per_page' );örneğin sayfalar add_filter( 'edit_post_per_page', 'my_edit_post_per_page' );için yazılar için kullanın add_filter( 'edit_page_per_page', 'my_edit_post_per_page' );.

  • veya fonksiyonunuzda bir koşul kullanın. Örneğin:

    işlevi my_edit_post_per_page ($ per_page, $ post_type) {

    if( $post_type == 'post' ) {
        $edit_per_page = 'edit_' . $post_type . '_per_page';
        $per_page = (int) get_user_option( $edit_per_page );
        if ( empty( $per_page ) || $per_page < 1 )
            $per_page = 1;
    }
    
    
    return $per_page;

Üzgünüm, belki de kendimi doğru açıklamadım. Yönetici alanındaki yazı düzenleme sayfasındaki meta kutulara atıfta bulunmanın yanı sıra, yönetici posta listesi sayfasında görüntülenecek varsayılan yayın sayısını ayarlamıştım.
NetConstructor.com

1
yani teknik olarak bu bir soru değil, gerçekten 2 soru?
Tom J Nowell

Cevabımı değiştirdim. Daha fazla detaya ihtiyacınız olursa haberim olsun.
sorich87

@ sorich87 cevabınız için teşekkür ederim ancak hatırladığım kadarıyla her bir meta kutunun kesin sırasını belirtmenin yolu yoktu ya da yoktu? Belki biraz daha belirgin olmalıyım. Temelde, her hesaba giriş yapmak zorunda kalmadan tüm kullanıcılar için çeşitli seçenekler önceden ayarlamama izin veren çeşitli kod parçacıklarını arıyorum. Örnekler: yazı düzenleme sayfalarında meta kutularının tam sırasını ayarlamak, yazı listesi sayfasında hangi sütun başlığının gösterileceğini ayarlamak, yazı listesi sayfasında gösterilecek varsayılan sonuçları ayarlamak ... bunun gibi şeyler. Şimdiden teşekkürler.
NetConstructor.com

Cevabımı değiştirdim.
sorich87

9

Aşağıdaki örnekte, yerini {CPT}sonrası tipi adıyla gibi post, page, book, event, imaginary, foobar... adında bir post türü var Yani eğer event, sizin için bir filtre eklemeniz gerekir get_user_option_meta-box-order_event.

add_filter( 'get_user_option_meta-box-order_{CPT}', 'metabox_order' );
function metabox_order( $order ) {
    return array(
        'normal' => join( 
            ",", 
            array(       // vvv  Arrange here as you desire
                'customdiv-{CPT}',
                'authordiv',
                'slugdiv',
            )
        ),
    );
}

Notlar:

  • İle birlikte normal, ayrıca olabilir sideveadvanced
  • Değerler virgülle ayrılmış div kimlikleridir, sayfa kaynak kodunu görüntüleyerek yakalayabilir veya tahmin edebilirsiniz.
  • Özel siparişinizde bulunmayan metabox, listenizin sonuna otomatik olarak eklenecektir.

1
{CPT}İsimlendirme ile biraz kafam karıştı ; açıklığa kavuşturmak için adında bir yayın türünüz eventvarsa, bunun için bir filtre eklemeniz gerekir get_user_option_meta-box-order_event.
rinogo,
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.