我们希望在管理面板中设计小部件页面时有所不同,主要是为了帮助站点管理员了解每个小部件在站点中的显示位置:
为此,我们需要更改小部件所使用的HTML。php呈现(仅仅更改css是不够的)。我们如何在不触及核心的情况下做到这一点?
我们希望在管理面板中设计小部件页面时有所不同,主要是为了帮助站点管理员了解每个小部件在站点中的显示位置:
为此,我们需要更改小部件所使用的HTML。php呈现(仅仅更改css是不够的)。我们如何在不触及核心的情况下做到这一点?
如果您将WordPress升级到3.3.1,这是绝对应该的,那么管理员中的每个小部件区域现在都有一个ID,您可以通过CSS将其用于目标,这应该足够了。看见http://core.trac.wordpress.org/ticket/18334 例如。
我想不出这个问题,但我没有时间彻底解决。所以我把我的想法写在这里,然后我会给你一笔小赏金。
有一个动作\'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冲突。没有注册侧栏时显示有用的消息(侧栏描述?)。当用户尝试将小部件拖动到预览框中时会发生什么情况?:)
简而言之,你不能不触及核心。
但是,您可以在register\\u侧栏函数中设置每个小部件区域的描述(小部件区域标题下的文本)。
我在PHP版本5.2.17的WP 3.2.1安装中收到了这条消息Notice: Undefined index: filter in /home/netstewp/public_html/wp-includes/default-widgets.php on line 382 知道为什么吗?