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?


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:



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? :)


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.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.