如何避免在儿童主题中两次加载style-.css?

时间:2019-02-25 作者:kibus90

我有2017个儿童主题,我发现了以下代码:

add_action( \'wp_enqueue_scripts\', \'child_enqueue_styles\',99);
function child_enqueue_styles() {
    $parent_style = \'parent-style\';
    wp_enqueue_style( $parent_style, get_template_directory_uri() . \'/style.css\' );
     wp_enqueue_style( \'seventeen-child\',get_stylesheet_directory_uri() . \'/style.css\', array( $parent_style ));
}
if ( get_stylesheet() !== get_template() ) {
    add_filter( \'pre_update_option_theme_mods_\' . get_stylesheet(), function ( $value, $old_value ) {
         update_option( \'theme_mods_\' . get_template(), $value );
         return $old_value; // prevent update to child theme mods
    }, 10, 2 );
    add_filter( \'pre_option_theme_mods_\' . get_stylesheet(), function ( $default ) {
        return get_option( \'theme_mods_\' . get_template(), $default );
    } );
}
。。

但这种风格存在问题。css正在加载两次。我尝试了引用Wordpress中的代码,但随后覆盖了footer等文件。php,导航。未加载子主题中的php。

有人能帮我一下吗,避免装货。css两次并保持完整功能?

2 个回复
最合适的回答,由SO网友:Jacob Peattie 整理而成

通常不需要将子主题的样式表排队。父主题就是这样做的。这有点让人困惑,所以我来解释一下。

在包括2017个主题在内的大多数主题中,样式表的加载方式如下:

wp_enqueue_style( \'twentyseventeen-style\', get_stylesheet_uri() );
理解这里发生的事情的诀窍是理解get_stylesheet_uri() 做激活常规主题时,此函数将URL返回到主题的样式。css文件。但是,当激活子主题时,该函数将返回子主题样式的URL。css文件。

这意味着,当您创建具有样式的子主题时。css文件,该文件将自动排队,但父主题不会。因此,在子主题中需要做的就是将父主题的样式表排队:

add_action( \'wp_enqueue_scripts\', \'child_enqueue_styles\', 9 );
function child_enqueue_styles() {
    wp_enqueue_style( \'parent-style\', get_parent_theme_file_uri( \'style.css\' ) );
}
注意,我将优先级设置为9. 这意味着父主题的样式表将在子主题的样式表之前排队,子主题的样式表将以默认优先级排队10.

SO网友:Qaisar Feroz

但这种风格存在问题。css正在加载两次。

此函数child_enqueue_styles() 排成两列style.css 文件,一个来自父主题,另一个来自子主题。

// This enqueues style.css from parent theme
wp_enqueue_style( $parent_style, get_template_directory_uri() . \'/style.css\' );

// This enqueues style.css from child theme 
wp_enqueue_style( \'seventeen-child\',get_stylesheet_directory_uri() . \'/style.css\', array( $parent_style ));
这就是为什么有两个style.css 已加载文件。子主题的style.css 应仅包含自定义项和it should not be a copy 父主题的style.css 文件

In case you are happy with parent theme\'s style 只需覆盖一些模板文件,就可以从代码中删除这些模板文件,以便只加载父主题的样式。

wp_enqueue_style( \'seventeen-child\',get_stylesheet_directory_uri() . \'/style.css\', array( $parent_style ));

相关推荐

WooThemes-供应商/预订-允许供应商管理资源

我正在尝试从WooThemes为bookings插件带来新功能。在组合预订和供应商插件时,不允许供应商用户管理资源(资源是自定义帖子)。我将新功能添加到资源自定义帖子中,然后将这些功能添加到供应商角色(通过用户角色插件)现在,资源显示在供应商角色的管理菜单中,但当我尝试添加新资源时,会出现“您无权访问此页面”错误。我添加的新功能:https://i.stack.imgur.com/OCDlV.png添加到角色的功能:https://i.stack.imgur.com/5t696.png使用角色登录时显示的