changing wp-admin/widgets.php

时间:2012-02-12 作者:Lea Cohen

我们希望在管理面板中设计小部件页面时有所不同,主要是为了帮助站点管理员了解每个小部件在站点中的显示位置:

enter image description here

为此,我们需要更改小部件所使用的HTML。php呈现(仅仅更改css是不够的)。我们如何在不触及核心的情况下做到这一点?

3 个回复
SO网友:helenhousandi

如果您将WordPress升级到3.3.1,这是绝对应该的,那么管理员中的每个小部件区域现在都有一个ID,您可以通过CSS将其用于目标,这应该足够了。看见http://core.trac.wordpress.org/ticket/18334 例如。

SO网友:fuxia

我想不出这个问题,但我没有时间彻底解决。所以我把我的想法写在这里,然后我会给你一笔小赏金。

有一个动作\'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冲突。没有注册侧栏时显示有用的消息(侧栏描述?)。当用户尝试将小部件拖动到预览框中时会发生什么情况?:)

  • SO网友:Norcross

    简而言之,你不能不触及核心。

    但是,您可以在register\\u侧栏函数中设置每个小部件区域的描述(小部件区域标题下的文本)。

    结束