子主题不覆盖父主题style le.css

时间:2014-10-10 作者:Jan

我刚刚创建了一个儿童主题,但我在风格上做的每一个改变。css不会覆盖父样式。css-其他文件工作。我就是这样做的:

在主题目录中创建新的子主题文件夹复制原始样式。css到它

4 个回复
SO网友:Pieter Goosen

应该注意的是,子样式表加载after 父主题的样式,因此这应该不是问题。我认为这里发生的是,您试图更改的样式不是父样式表中的样式,而是其他自定义样式表中的样式。如果是这样的话,那么您的更改将不起作用,因为很可能您的子主题的样式表是在父主题中的自定义样式表之前加载的。

还应注意的是@import 不应用于导入父样式表。正确的方法是使用wp_enqueue_style() 连接到wp_enqueue_scripts

下面是如何正确排队并将父样式表添加到childtheme。

add_action( \'wp_enqueue_scripts\', \'enqueue_parent_theme_style\' );
function enqueue_parent_theme_style() {
    wp_enqueue_style( \'parent-style\', get_template_directory_uri().\'/style.css\' );
}
从codex来看,这是样式表的正确外观

/*
 Theme Name:   Twenty Fourteen Child
 Theme URI:    http://example.com/twenty-fourteen-child/
 Description:  Twenty Fourteen Child Theme
 Author:       John Doe
 Author URI:   http://example.com
 Template:     twentyfourteen
 Version:      1.0.0
 Tags:         light, dark, two-columns, right-sidebar, responsive-layout, accessibility-ready
 Text Domain:  twenty-fourteen-child
*/


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

NOTE

我已更新codex 在这篇文章中有这些信息

EDIT

来自下面的评论

如果父主题不使用wp\\u enqueue\\u style(),那么如何才能使用一个enque父主题的样式。css而不影响父主题的模板?这一点不清楚您更新的int Codex。你能举例说明一下吗。

首先,如果你是一个主题作者,NEVER 通过添加样式表或脚本<link> 主题标题中的标记。这是不正确的做法。通过wp_enqueue_scripts 法典中描述的挂钩

老实说,我从来没有意识到还有一些主题作者在这样做。我认为解决这个问题的最好方法是复制父标题。php到您的子主题,并手动删除(删除)标题中的样式和脚本。

然后,您可以继续使用wp_enqueue_scripts 如上例所示。记住,利用get_templatedirectory\\u uri()`从父主题排队并注册脚本和样式,记住,加载样式和脚本的顺序在这里很重要。如果脚本/样式依赖于其他脚本/样式,请加载它after 特定的脚本/样式

SO网友:Brad Dalton

确保父主题在其函数中未使用wp\\u enqueue\\u style()。php文件。

如果是这样,您还可以将子样式表从其函数中排队。php

add_action( \'wp_enqueue_scripts\', \'load_my_child_styles\', 20 );
function load_my_child_styles() {
    wp_enqueue_style( \'child-style\', get_stylesheet_directory_uri().\'/style.css\', array(\'twentyfourteen-style\'), \'1.0.0\' );
}
下面是标题在子主题样式中的外观示例。css文件

/*
 Theme Name:   Twenty Fourteen Child
 Theme URI:    http://example.com/twenty-fourteen-child/
 Description:  Twenty Fourteen Child Theme
 Author:       John Doe
 Author URI:   http://example.com
 Template:     twentyfourteen
 Version:      1.0.0
 Tags:         light, dark, two-columns, right-sidebar, responsive-layout, accessibility-ready
 Text Domain:  twenty-fourteen-child
*/

http://codex.wordpress.org/Child_Themes

SO网友:jorgeleandrobr

我在阅读WordPress Codex中的儿童主题章节时发现了这条线索。

我根据Simone (这反过来又基于下划线)并创建了一个函数。带有推荐代码的php文件:

<?php

add_action( \'wp_enqueue_scripts\', \'enqueue_child_theme_styles\', PHP_INT_MAX);
function enqueue_child_theme_styles() {
    wp_enqueue_style( \'parent-style\', get_template_directory_uri().\'/style.css\' );
    wp_enqueue_style( \'child-style\', get_stylesheet_uri(), array(\'parent-style\')  );
}
然而,使用此方法在“我的孩子”主题中产生了一个问题。我在GitHub中报告了该问题:link. 解决方案是移除PHP_INIT_MAX 来自的常量add_action()

我想知道这是否是一个与Simone相关的问题,或者这是否也会影响其他主题(在这种情况下,可能是函数中的一个问题)。。。

非常感谢。

SO网友:Asaf Lopez

我也遇到了同样的问题,我解决了它,将子主题文件夹和权限内的文件修改为775。这可能不是最安全的方法,但确实有效。让我知道这是否适合您:)

结束

相关推荐

Child-theme breaks site

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