【问题标题】:How do I get my child theme in wordpress to work with multiple style sheets?如何让我的子主题在 wordpress 中使用多个样式表?
【发布时间】:2015-01-10 21:15:23
【问题描述】:

我的子主题文件夹中有styles.cssfooter.phpheader.phpfunctions.php。 (wp-content/themes/kingdom-child) 该站点由 woocommerce 和 bootstrap 文件组成。我的functions.php 文件中有这个:

<?php
function enqueue_child_theme_styles() {
     wp_enqueue_style( 'child-style', get_stylesheet_uri(), array('kingdom-style') );
}
add_action( 'wp_enqueue_scripts', 'enqueue_child_theme_styles', PHP_INT_MAX);

我的 styles.css 文件中有这个:

/*
Theme Name: Kingdom - Woocommerce Amazon Affiliates Theme
Theme URI: http//smarttvsandgadgets.com/
Description: Kingdom - Woocommerce Amazon Affiliates Child Theme
Author: Charlie Aubuchon
Template: kingdom
Version: 1.4
*/

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

header.phpfooter.php 保持不变。

我尝试制作一些样式来改变主题,但没有任何效果。

我做错了什么? (php知识不多,网上找了所有例子。)

【问题讨论】:

  • PHP_INT_MAX 是干什么用的?可以去...
  • 这是一个默认的 PHP 常量,用作优先级参数
  • 我知道它是什么......我只是不明白为什么它需要在那里。默认情况下,子主题将其样式排在父主题之后。
  • @futureone,不确定是不是拼写错误,但应该是style.css 而不是styles.css
  • 是的,对不起。它是 style.css

标签: php css wordpress twitter-bootstrap


【解决方案1】:

在文档中,一些示例适用于较旧的 WP。我已经更新了分钟的东西。 Theme Handbook 有较早的参考,因为人们离开了项目,而同样的人实际上继续为主要的 WP 开发编写代码。两年前的故事。本质上 WordPress.ORG 是一个自愿项目。文档之间可能存在细微差别。但OP实际上有一个基本问题。它已经变得复杂了。

如果 OP 只需要自定义,基本使用不需要学习 enqueue

最好保留style.css 的备份副本。为了语法突出显示,请在 vi 或 gedit 等适当的编辑器中进行编辑。在文本编辑器中打开 style.css。不要使用 WP 的功能。如果你在 MS WordPad 中编辑,我不知道会发生什么。

如果修改不起作用,这可能意味着很多事情,例如缓存页面正在加载,用户代理尊重其他指令,操作系统 + 浏览器组合不好等等。使用开发人员工具在具有空缓存、cookie 的 Chrome 或 Firefox 上进行调试。使用 WP 编辑器可能会因浏览器缓存而失败。缓存插件应该关闭。在开发服务器上编辑。首先确保这些点。然后删除这个, PHP_INT_MAX 部分并尝试。

如何编译引导程序很重要。

OP 的更多内容

footer.php、header.php 和 functions.php 在我的子主题文件夹中。

是的,千万不要在没有备份的情况下触摸 functions.php 文件。每当我们说您将此 sn-p 添加到 functions.php 时,除非另有说明,否则就是该文件。没有它,子主题将无法工作。 footer.phpheader.php 不是强制性文件。我们通常用这些文件覆盖默认函数。如果存在home.phpfront-page.php,这将覆盖您在主页的WordPress Admin 中的设置。

我与 00M 或那个付费主题无关。你在这个级别不需要了解 PHP。可能是其他样式表正在加载 - 检查资源与webpagetest.org。您可能正在编辑一个实际上不是您需要编辑的文件。使用开发者工具。无需接触 PHP(除了删除 , PHP_INT_MAX - 注意逗号,它也应该删除)您可以自定义。

其他不必要的话题来自答案

没有 cmets,这完全适合最新版本的 WP:

<?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')  );
}
... other stuffs ...

结果看起来像导入 CSS。

我对M00一无所知。我猜 OP 在这里添加了&lt;?php 打开,它上面有更多的东西。文件开头有一些cmets是正常的。

这将是通过像页眉和页脚插件这样的插件作为纯 HTML 的正确方式:

<link rel="stylesheet" type="text/css" href="https://42.akamai.net/stackoverflow.com/questions/d.css" media="all" />
<!-- media="value", value = all, print, ... 
 Old reference from w3c 
 http://www.w3.org/TR/html401/struct/links.html#adef-rel 
 Microsoft Windozzz IE [1 to 8] can fail to fetch huge number of resources. 
 Conditional IE specific CSS might be needed.
-->

我们经常取消注册材料并以这种一致的方式提供服务。反向功能。对于自己的网站,我们需要绝对 URL,出于开发目的,使用 PHP 函数。 这些用于附加样式表,不是用于基本自定义,而是用于优化

add_action() 中的PHP_INT_MAX 指出开发人员希望在加载所有其他样式表之后出现父样式表。 OP可以将其删除以进行测试。除非我们能看到整个functions.php,否则无法说用法是否错误。

有多种方法可以打印路径或 uri,因为我们不知道网站的 FQDN 是什么:

get_template_directory_uri()
get_stylesheet_directory_uri()
get_stylesheet_uri()
get_theme_root_uri()
get_theme_root()
get_theme_roots()
get_stylesheet_directory()
get_template_directory()

我不明白为什么这个人突然引用了 WP enqueue 脚本函数并错误地引用了 my webpage 和 Net Tut+ guide。它们用于不同的目的。不适用于子主题的样式表自定义。 StackoverFlow 有一个值。我,至少从不说做错了 PHP 和 HTML 的鸡尾酒!人们可能有不同的看法,但我从未说过不要将 WP enqueue 脚本用于子主题的主样式表。如果您有任何问题,请在放置链接之前询问我们。这是针对非阻塞 Java 脚本的,有asyncdefer。我尊重您的学习和帮助,但可能您应该检查您的答案并更正语法。

我们在谈论其他事情,那个人误解了。这是子主题的参考:

codex.wordpress.org/Child_Themes

再说一次,我与 OOM 或那个子主题无关。我是通过搜索域名来拒绝的。我给出了链接和解决方案。这就是人们开始使用 WordPress 的方式。 5年后,如果你继续调整,你将成为维护自己网站的微大师。

对不起,更大的回复。

【讨论】:

    【解决方案2】:

    根据你的问题,两种选择(我的回答不好)

    如果(对于初学者只需要样式表就可以作为最快的方式)

    假设您只想使用样式表,为什么不使用普通的外部 css 包含方式。并查看源代码,看看您的 css 链接是否正常工作并且处于正确的加载位置(找到而不是 404)。

    <link rel="stylesheet" type="text/css" href="<?php echo get_stylesheet_directory_uri(); ?>/style.css">
    
    // previsouly got confused about the following 4 wp functions: 
    get_stylesheet_directory(): file path to current Theme directory
    get_stylesheet_directory_uri(): url path to current Theme directory
    get_template_directory(): file path to parent Theme directory
    get_template_directory_uri(): url path to parent Theme directory
    

    我个人不按照wordpress模板默认的函数方式添加css、js。有时我不太关心入队的好处(我承认这是错误的):https://wordpress.stackexchange.com/questions/49098/what-are-the-benefits-of-using-wp-enqueue-script

    但我可能只是把它放在最适合我阅读或执行覆盖、控制加载顺序等的任何地方,在测试阶段作为我个人的喜好。

    else,(使用入队脚本有很多好处) 您需要更多时间来调试它以了解模板加载脚本及其序列的方式,忽略上面的硬代码脚本答案。

    另外两个关于入队脚本的参考链接;

    wordpress 入队脚本的来龙去脉

    ttp://code.tutsplus.com/articles/the-ins-and-outs-of-the-enqueue-script-for-wordpress-themes-and-plugins--wp-22509

    wp-enqueue-script函数的优缺点 ttps://thecustomizewindows.com/2014/04/advantages-disadvantages-wp-enqueue-script-function/

    作为作者,我也是低声誉用户,我想利用我研究和学习的有限知识来伸出援助之手。当我们参与讨论,提供此类问题的相关答案/参考时,总是有很多人倾向于拒绝投票以删除答案,而实际上还没有更好的答案或更正所引用的信息。这样的行为不是一种好的讨论文化。

    【讨论】:

    • 出于几个原因,我对此表示反对。 (1) get_template_directory_uri() 返回父主题目录,而不是子主题...这行不通; (2) 标记中的语法错误; (3) 这是错误的排队方式。
    • 实际上 get_template_directory_uri 是获取 dyn wordpress 模板 url 然后使用正确的 "/custompath" 后面可以获取正确的 url 的正常方法,在那些子主题模板中通常他们已经定义了自己的 CONSTENT VARIABLES我不记得了,CHERRY 或其他框架可能使用不同的名称。
    • 没有。这是错误的。阅读the documentation。我引用:In the event a child theme is being used, the parent theme directory URI will be returned, get_template_directory_uri() should be used for resources that are not intended to be included in a child theme.
    • 是的,我认为我不正确。谢谢指出。推荐使用@rnevius get_stylesheet_directory_uri()。
    • 那么,我应该有 get_stylesheet_directory_uri();在 fuctions.php 中替换 get_stylesheet_uri(); .. ??
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-10-14
    • 1970-01-01
    • 2014-10-13
    • 1970-01-01
    • 2013-07-13
    • 1970-01-01
    • 2012-01-10
    相关资源
    最近更新 更多