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.php
atas 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? :)