Soruyu kafamdan çıkaramıyorum, ancak tam bir çözüm için zamanım yok. Bu yüzden fikrimi buraya yazıyorum, sonra küçük bir ödül getireceğim.
Bir eylem vardır 'widgets_admin_page'
içinde wp-admin/widgets.php
diğer içeriğin üstüne. Buraya bir önizleme kutusu yerleştirebilirsiniz.
Basit kod:
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>';
}
Bu, kayıtlı tüm kenar çubuklarının bir dizisini yazdırır. Kayıtlı widget'ları bulmak için tüm kenar çubuklarında yürümek zorundasınız.
Önizlemeyi kullanışlı hale getirmek için iki dosyaya ihtiyacınız vardır: HTML şablonu ve stil sayfası.
Kullanırdım add_theme_support()
.
Temanın örnek kodu functions.php
:
add_theme_support(
'widget_preview',
array (
'template' => get_stylesheet_directory() . '/widget-preview.php',
'stylesheet' => get_stylesheet_directory() . '/widget-preview.css'
)
);
In show_widget_preview()
size stil sayfasını enqueue ve şablonu yükleyin. İçindeki önceden tanımlanmış yer tutuculardaki kayıtlı kenar çubuklarını oluşturun widget-preview.php
.
Kullanıcı bir widget'ta Kaydet düğmesine bastıktan sonra şablonu AJAX başına güncelleyin .
Zorluklar: Erişilebilirlik modunu, küçük pencereleri ve CSS çakışmalarını dikkate alın. Hiçbir kenar çubuğu kaydedilmediğinde yararlı bir mesaj gösterin (kenar çubuğu açıklamaları?). Bir kullanıcı bir widget'ı önizleme kutusuna sürüklemeye çalıştığında ne olur? :)