未为文件加载子主题中的样式,而不是.css

时间:2014-08-15 作者:andreas

我已经建立了一个多站点和多语言的Worpress页面,以支持英语和德语。目前只处理英文版本。

我使用WooThemes的“定义”主题,并设置了一个子主题(如下所示this manual) 根据我的需要定制设计。基本上,这很好,但有一些例外。

我创建了子主题目录,采用了示例样式。css满足我的需要(包括../definition/style.css、主题名称、模板)。只要我覆盖样式中定义的css定义。css,一切都很好。父主题还定义了其他文件中的样式(例如,themes/definition/css/layout.css)。如果我覆盖了其中一种样式,什么都不会发生。我已经准备好在子主题文件夹的同一路径上创建相同的文件,但没有成功。

当我用铬元素检查(?)在css样式部分,我看到它仍在从父文件加载样式。

对于样式中的类。css它显示以下url:“主机/wp内容/主题/定义子级/样式。css?版本=3.9.2:69”

但对于css/layout之外的类。css它显示了一个指向父主题的链接:“host/definition/css/layout.css?3.9.2:87”

要详尽的风格。css文件:

/* Theme Name:   WooThemes Definition Calendr.it Child
 Theme URI:    TODO to be defined.
 Description:  WooThemes Definition Calendr.it Child Theme
 Author:       Andras Scheucher
 Author URI:   http://andreasscheucher.com
 Template:     definition
 Version:      1.5.0
 Tags:         TODO to be defined
 Text Domain:  definition-celendrit-child
*/

@import url("../definition/style.css");


/* =Theme customization starts here
-------------------------------------------------------------- */

....
在阅读了这篇文章(但没有完全理解)之后,我还尝试加载css/布局。css具有此功能。php:

<?php // register and enqueue the stylesheet.
add_action( ‘wp_enqueue_scripts’, ‘register_child_theme_styles’ );

function register_child_theme_styles() {
  wp_register_style( ‘style’, get_stylesheet_uri() );
  wp_enqueue_style( ‘style’ );
  wp_register_style( ‘layout’, get_stylesheet_uri() + "/css" );
  wp_enqueue_style( ‘layout’ );
} ?>
这没有帮助,但我认为这无论如何都是不正确的。

有什么提示吗,我还可以试试别的吗?

如果你需要定义主题的代码部分,我当然可以给你。。。

1 个回复
SO网友:Pieter Goosen

子主题的主样式表(style.css)加载在父主题的主样式表(style.css)之后,这就是为什么您看到子主题中的更改覆盖了父主题样式。

至于其他样式表,都是关于优先级的。这意味着,父主题中的自定义样式表是在子主题的样式表之后加载的,因此任何影响父主题自定义样式表的更改都会被父主题中的自定义样式表覆盖。这就是为什么你看不到任何变化。

为了解决这个问题,您需要在子主题中创建自己的自定义样式表(就像您已经使用layout.css一样),并在其中加载所有自定义样式。你现在缺少最后的执行力。您的样式表需要排队wp_enqueue_style() 然后它必须通过一个函数连接到wp_enqueue_scripts 在注册/排队样式和脚本时,哪个是正确的挂钩。

您的代码中有一些错误。首先,你应该优先考虑你的行动。您需要检查父主题在加载自己的布局时使用的优先级。css。您的优先级应该较低(较高的数字)。这将确保加载自定义样式表after 父主题的自定义样式表。

其次,你的道路应该是get_stylesheet_directory_uri() 这是正确格式的URL,而不是get_stylesheet_uri() 用于检索当前主题的样式表。

<?php // register and enqueue the stylesheet.
add_action( \'wp_enqueue_scripts\', \'register_child_theme_styles\', 9999 );

function register_child_theme_styles() {
  wp_enqueue_style( \'style\', get_stylesheet_directory_uri() . \'/css/layout.css\' );
} 
?>
需要注意的是,如果没有加载样式表或脚本编码,则不必注册,只需将其排队即可

这里还有一点需要注意,您的$handle 应始终是唯一的

您还应该查看提供的其他信息链接

结束

相关推荐

Child-theme breaks site

所以,我有一个子主题,里面除了所需的CSS文件之外什么都没有。一旦我激活了这个儿童主题,我的整个网站就关闭了。最后我有两个问题:激活一个只有CSS的子主题怎么能破坏我的网站</我怎样才能回到我原来的主题</这些是网站给我的错误:Warning: require_once(/wp-content/themes/interio_child/admin/options-framework.php) [function.require-once]: 无法打开流:中没有此类文件或目录/wp-c