去掉小部件项Class=“Widget-Item”

时间:2017-05-07 作者:The WP Intermediate

我们能坚持真正的解决办法,而不是草率的补救办法吗。这个问题的目的是完全摆脱“widget item”类。请不要发布泄露的解决方案,如操纵CSS等,否则将违背发布问题的目的。

我想摆脱这个类=”widget-item“因为这会产生额外的边距/填充。请查看图片。enter image description here

我想摆脱这门课,但不是div 因为这可能会破坏设计。

我确信应该有一些方法来删除它,因为当我们为菜单编写小部件时,这是可能的→

\'container\'   => \'nav\',
\'container_class\' => \'footer-menu\'
我们可以改变divnav 并插入我们自己的类“footer-menu“。

可以看到发生这种情况的实时链接here.

3 个回复
SO网友:Picard

最直接的方法是在CSS文件中覆盖此内容,例如:

.widgettitle {
    padding: 0;
    margin: 0;
}
或者,您可以在注册小部件时更改类的名称(可能在functions.php文件中)\'before_title\' 参数以下是原始20x6个青少年模板的示例:

register_sidebar( array(
        \'name\'          => __( \'Sidebar\', \'twentysixteen\' ),
        \'id\'            => \'sidebar-1\',
        \'description\'   => __( \'Add widgets here to appear in your sidebar.\', \'twentysixteen\' ),
        \'before_widget\' => \'<section id="%1$s" class="widget %2$s">\',
        \'after_widget\'  => \'</section>\',
        \'before_title\'  => \'<h2 class="widget-title">\',
        \'after_title\'   => \'</h2>\',
    ) );

SO网友:Christina

这个widget-item 类位于您正在使用的主题中已注册侧栏的$参数中。如果要将其删除并替换为其他内容,可以使用dynamic_sidebar_params 过滤,或者您可以在主题中找到它(如果您使用的是父主题而不是子主题),然后只需更改它,但是结果可能不是您所期望的,因为填充和边距不是来自该类。

下面的过滤器将添加到子主题函数的最后一个。php文件位于所有其他函数之后和所有函数之外,并且毕竟包含/需要。在此示例中widget-item 将替换为my-widget-class (您可以更改)。在这种情况下,.widget-item 或者,这里的任何类都为小部件提供了一个全局类,并且没有像您的图像中那样的填充或边距。使用开发人员工具时,可以清楚地看到子元素是带有边距和填充的元素。

function prefix_filter_widget_div_wrappper( $params ) {

    $params[0][\'before_widget\'] = \'<div class="my-widget-class %2$s">\' ;

    $params[0][\'after_widget\']  = \'</div>\' ;

    return $params;

}
add_filter( \'dynamic_sidebar_params\' , \'prefix_filter_widget_div_wrappper\' );
你现在的问题是.newsletter 的子女.widget-item 如果使用CSS专用性,则可以调整位置的外观:

.newsletter {
    padding: 25px;
    ..etc.
}
像这样:

.site-footer .newseltter {
    padding: 10px;
    margin: 0;
}
有条件的dynamic_sidebar_params 过滤器Locate your registered sidebar ID by looking for where it is registered in your theme functions php file(s) parent or child.

function prefix_filter_widget_div_wrappper_conditional( $params ) {

    //* where `register-sidebar-id` is the registered sidebar id (you would look for this in your theme\'s code)

    if ( \'registered-sidebar-id\' === $params[0][ \'id\' ] ) :

        $params[0][\'before_widget\'] = \'<div class="my-widget-class %2$s">\' ;

        $params[0][\'after_widget\']  = \'</div>\' ;

    endif;

    return $params;

}
add_filter( \'dynamic_sidebar_params\' , \'prefix_filter_widget_div_wrappper_conditional\' );

SO网友:Nathan Johnson

也许最简单的方法是创建一个插件,将jQuery脚本排队。

插件。php

/**
 * Plugin Name: Remove Widget Item Class
 */

add_action( \'wp_enqueue_scripts\', \'wpse_266151_enqueue_scripts\' );
wpse_266151_enqueue_scripts() {
  wp_enqueue_script(
    \'remove-widget-item-class\', 
    plugins_url( \'remove-widget-item-class.js\', __FILE__ ), 
    [ \'jquery\' ]
  );
}
删除小部件项目类。js公司

jQuery( ".widget-item" ).removeClass( "widget-item" );

结束

相关推荐

Child theme functions.php

我不知道如何改变我的孩子主题的功能。php。在woothemes文档中,它说“子主题中的functions.php应该是空的,并且不包括父主题functions.php中的任何内容。”我需要使用此功能来不显示产品类别,但我不确定如何在我的子主题中执行此操作。也许有人能给我提供一些指示?add_action( \'pre_get_posts\', \'custom_pre_get_posts_query\' ); function custom_pre_get_posts_query( $