mengubah wp-admin / widgets.php

11

Kami ingin mendesain halaman widget di panel admin sedikit berbeda, terutama untuk membantu administrator situs memahami di mana setiap widget akan muncul di situs:

masukkan deskripsi gambar di sini

Untuk itu, kita perlu mengubah HTML yang dirender oleh widgets.php (cukup mengubah css tidak cukup). Bagaimana kita bisa melakukan itu tanpa menyentuh inti?

Lea Cohen
sumber
Di mana panel untuk menarik widget ditempatkan dengan pendekatan di atas?
sanchothefat
@sanchothefat di bawahnya
Lea Cohen
Mengapa tidak melanjutkan dan mengirimkan tambalan ke inti. Sepertinya peningkatan yang bermanfaat ... Kemudian, saat mendaftarkan sidebar, param yang ditambahkan adalah untuk menentukan lokasi. Jika tidak ada yang ditentukan, ia menganggap itu terstruktur seperti sekarang (di sebelah kanan)
Taylor Dewey

Jawaban:

7

Jika Anda meningkatkan WordPress Anda menjadi 3.3.1, yang seharusnya Anda lakukan, setiap area widget di admin sekarang memiliki ID yang dapat Anda gunakan untuk menargetkan melalui CSS, yang seharusnya sudah cukup. Lihat http://core.trac.wordpress.org/ticket/18334 untuk contoh.

helenhousandi
sumber
4

Saya tidak bisa mengeluarkan pertanyaan itu dari kepala saya, tetapi saya tidak punya waktu untuk solusi yang lengkap. Jadi saya hanya menuliskan ide saya di sini, maka saya akan menetapkan hadiah kecil.

  • Ada tindakan 'widgets_admin_page'di wp-admin/widgets.phpatas konten lainnya. Anda dapat menempatkan kotak pratinjau di sini.
    Kode sampel:

    add_action( 'widgets_admin_page', 'show_widget_preview' );
    function show_widget_preview()
    {
        $preview_widgets = $GLOBALS['wp_registered_sidebars'];
        unset ( $preview_widgets['wp_inactive_widgets'] );
    
        print '<div style="border:2px solid #ddf;padding:20px">'
        . '<pre>' . htmlspecialchars( print_r( $preview_widgets, TRUE ) ) . '</pre>'
        . '</div>';
    }

    Ini mencetak array dari semua sidebar yang terdaftar. Anda harus berjalan melalui semua bilah sisi untuk menemukan widget yang terdaftar.

  • Untuk membuat pratinjau bermanfaat, Anda memerlukan dua file: templat HTML dan lembar gaya.
    Saya akan menggunakan add_theme_support().
    Contoh kode untuk tema functions.php:

    add_theme_support( 
        'widget_preview', 
        array ( 
            'template'   => get_stylesheet_directory() . '/widget-preview.php', 
            'stylesheet' => get_stylesheet_directory() . '/widget-preview.css' 
        ) 
    );
  • Di show_widget_preview()Anda enqueue lembar gaya dan memuat template. Jadikan bilah sisi yang terdaftar di placeholder yang telah ditentukan di widget-preview.php.

  • Perbarui template per AJAX setelah pengguna menekan tombol Simpan di widget.

  • Tantangan: Mempertimbangkan mode aksesibilitas, jendela kecil dan konflik CSS. Tampilkan pesan yang berguna ketika tidak ada sidebar terdaftar (deskripsi sidebar?). Apa yang harus terjadi ketika pengguna mencoba menyeret widget ke dalam kotak pratinjau? :)

fuxia
sumber
terima kasih sudah memikirkannya, @toscho! Saat ini saya sedang mengerjakan proyek lain, tetapi harus kembali ke yang ini, dan saya akan memeriksa solusi Anda dan memberi tahu Anda. Terima kasih lagi!
Lea Cohen
0

jawaban singkatnya adalah Anda tidak bisa, bukan tanpa menyentuh inti.

namun, Anda dapat mengatur deskripsi setiap area widget (teks di bawah judul area widget) di fungsi register_sidebar.

Norcross
sumber