我想不出这个问题,但我没有时间彻底解决。所以我把我的想法写在这里,然后我会给你一笔小赏金。
有一个动作\'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冲突。没有注册侧栏时显示有用的消息(侧栏描述?)。当用户尝试将小部件拖动到预览框中时会发生什么情况?:)