ฉันไม่สามารถลบคำถามออกจากหัวของฉันได้ แต่ฉันไม่มีเวลาสำหรับการแก้ปัญหาที่สมบูรณ์ ดังนั้นฉันแค่เขียนความคิดของฉันที่นี่แล้วฉันจะตั้งค่าเล็กน้อย
มีการดำเนินการคือ'widgets_admin_page'
ในwp-admin/widgets.php
ข้างต้นเนื้อหาอื่น ๆ คุณสามารถวางกล่องแสดงตัวอย่างได้ที่นี่
รหัสตัวอย่าง:
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>';
}
นี่จะพิมพ์อาร์เรย์ของแถบด้านข้างที่ลงทะเบียนไว้ทั้งหมด คุณต้องเดินผ่านแถบด้านข้างทั้งหมดเพื่อค้นหาวิดเจ็ตที่ลงทะเบียน
ในการทำให้การแสดงตัวอย่างมีประโยชน์คุณต้องมีสองไฟล์: เทมเพลต HTML และสไตล์ชีต ผมจะใช้
โค้ดตัวอย่างสำหรับธีม:add_theme_support()
functions.php
add_theme_support(
'widget_preview',
array (
'template' => get_stylesheet_directory() . '/widget-preview.php',
'stylesheet' => get_stylesheet_directory() . '/widget-preview.css'
)
);
ในshow_widget_preview()
คุณจัดคิวสไตล์ชีทและโหลดเทมเพลต widget-preview.php
ทำให้แถบด้านข้างที่จดทะเบียนในตัวยึดตำแหน่งที่กำหนดไว้ล่วงหน้าใน
อัพเดตเทมเพลตต่อ AJAX หลังจากผู้ใช้กดปุ่มบันทึกในวิดเจ็ต
ความท้าทาย: นำโหมดการช่วยสำหรับการเข้าใช้งานหน้าต่างเล็ก ๆ และ CSS ขัดแย้งกัน แสดงข้อความที่มีประโยชน์เมื่อไม่มีการลงทะเบียนแถบด้านข้าง (คำอธิบายแถบด้านข้าง?) จะเกิดอะไรขึ้นเมื่อผู้ใช้พยายามลากวิดเจ็ตลงในกล่องแสดงตัวอย่าง :)