更改wp-admin / widgets.php


11

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

在此处输入图片说明

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


通过上述方法,将小部件拖出面板的位置将放置在哪里?
sanchothefat 2012年

@sanchothefat下面
Lea Cohen

为什么不批准并向核心提交补丁。似乎是值得进行的改进...然后,在注册侧栏时,添加的参数将是指定位置。如果未指定,则假定其结构类似于现在(右侧)
Taylor Dewey

Answers:



4

我想不出这个问题,但是我没有时间寻求一个完整的解决方案。所以我只是在这里写下我的想法,然后我会设置一个小小的赏金。

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


感谢您的思考,@ toscho!我目前正在从事其他项目,但必须回到这一项目,我将检查您的解决方案并告知您。再次感谢!
Lea Cohen

0

简短的答案是,你不能没有核心。

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

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.