修改WordPress小工具屏幕

时间:2011-08-06 作者:Fnarp

我已经搜索了一段时间如何修改小部件管理屏幕,我正在尝试将侧栏id添加到包装器元素中。

  • Current output: (wordpress制作)

    <div class="widgets-holder-wrap">
    
  • Desired output:

    <div id="sidebar-id-here" class="widgets-holder-wrap">
    
    在研究中我遇到过Stephanie Leary\'s blog 引用following ticket.

    我也希望这样做(将侧栏ID添加到各自的包装器中),但从theme functions.php, 即,无需修改wp-admin/widgets.php.

    如果有人知道这将是多么伟大!谢谢

3 个回复
最合适的回答,由SO网友:t31os 整理而成

我个人建议使用排队,最好尽可能使用缓存和脚本压缩。

首先,排队。

add_action( \'admin_enqueue_scripts\', \'add_sidebar_ids_to_widget_admin\' );

function add_sidebar_ids_to_widget_admin( $current_page_hook ) {
    if( \'widgets.php\' != $current_page_hook )
        return;
    wp_enqueue_script( \'widget-admin-jquery\', get_stylesheet_directory_uri() . \'/widget-admin-jquery.js\', array( \'jquery\' ), \'1.0\', true );
}
我将代码放在子主题的函数文件中,如果您在其他地方使用它,则需要替换get_stylesheet_directory_uri() 还有别的东西。

对于

  • Child themes

    使用get_stylesheet_directory_uri() . \'/yourfile.js\'

  • Parent themes

    使用get_template_directory_uri() . \'/yourfile.js\'

  • Plugins

    使用plugins_url( \'/yourfile.js\', __FILE__ )

    jQuery(document).ready(function($){
        $(\'#widgets-right .widgets-holder-wrap\').each(function(){
            var slug = $(this).find(\'h3\');
            $(this).attr(\'id\', slug.text().toLowerCase().replace( /\\s/g, \'-\' ) + \'holder-wrap\' );
        });
    });
    
    与Bainternet的解决方案几乎完全相同,只是方法略有不同。

  • SO网友:Bainternet

    正如Rarst指出的那样,如果不破解核心文件或使用JavaScript,就无法做到这一点,因此,下面是如何使用jQuery和一些旧的JavaScript字符串操作来做到这一点:

    function add_sidebar_holder_id(){ 
        global $pagenow;
        if ($pagenow == \'widgets.php\'){
            ?>
            <script>
    
            jQuery(document).ready(function(){
                jQuery(\'div[class^="widgets-holder-wrap"]\').each(function()
                {       
                    var SidebarNameH3 = jQuery(this).find(\'h3\').html();
                    var RemoveSpan = SidebarNameH3.indexOf("<span>");
                    var SidebarName = SidebarNameH3.substring(0,RemoveSpan -1);
                    SidebarName = SidebarName.replace(/ /gi,\'-\');
                    var SidebarID = SidebarName +\'-holder-wrap\';
                    jQuery(this).attr(\'id\', SidebarID);
                });
            });
            </script>
    
            <?php
        }
    }
    
    add_action(\'admin_footer\',\'add_sidebar_holder_id\');
    
    你会发现:

    enter image description here

    SO网友:Rarst

    据我所知,这张罚单的全部要点是,如果不修改核心文件,这是不可能的(这通常是个坏主意)。

    所以,您可以等待该建议在核心中得到实施(如果有),或者寻找替代解决方案。我认为一些JS可以在这方面提供帮助,但不是我的专业领域。

    结束

    相关推荐

    Why use widgets?

    我对使用WordPress很陌生,我想知道使用小部件的好处是什么?看here 这听起来像是为那些不是程序员的人准备的,他们想在他们的网站上添加插件。对吗?或者小部件是否在某种程度上使站点更加健壮?