【问题标题】:Wordpress Child Theme Needs to pull Multiple style sheets form ParentWordpress 子主题需要从父级中提取多个样式表
【发布时间】:2017-10-14 19:17:50
【问题描述】:

我正在组合一个基于父主题的 wordpress 子主题,该父主题在其目录中有多个样式表。例如,这是一些样式表的导航:

  • 父主题/style.css
  • 父主题/css/style.css
  • 父主题/css/bootstrap.css

我创建了我的子文件夹并创建了我的 style.css 文件以及我的 function.php 文件,但似乎子主题只是为 parent-theme/style.css 文件提取样式表,而不是全部提取.css 文件。

经过一番挖掘,这是我的 functions.php 文件当前所在的位置:

<?php

/* v1.0.5
Date: 5/15/17
*/


function my_theme_enqueue_styles() {

$parent_style = 'wizard-style'; // This is 'wizard' for the Wizard theme.

wp_enqueue_style( $parent_style, get_template_directory_uri() . 'style.css' );
wp_enqueue_style( $parent_style, get_template_directory_uri() . '/css/style.css' );
wp_enqueue_style( 'child-style',
    get_stylesheet_directory_uri() . '/style.css',
    array( $parent_style ),
    wp_get_theme()->get('Version')
);
}
add_action( 'wp_enqueue_scripts', 'my_theme_enqueue_styles' );
?>

我的主要目标是让子主题提取所有需要的样式表,并利用我的子主题文件夹 (child-theme/style.css) 下的一个样式表来进行我想做的任何更改。

我的问题是:

  1. 这可能吗?
    • 如果可能,可能会发生哪些错误导致我的 fucntion.php 文件无法提取所有样式表?
    • 如果不可能,我需要对我的 function.php 文件和目录进行哪些更改才能使其正常工作?

【问题讨论】:

    标签: php css wordpress parent-child


    【解决方案1】:

    我在使用 ArileWP 主题时遇到过这样的问题,经过大量研究后,我发现加载多个样式表不是问题(使用 wordpress.org 论坛和其他论坛上的 enqueue 功能实际上确实加载了所有样式表,无论如何它们是在父主题的根级别还是较低目录级别)。

    在我的情况下,问题最终是 Arile 要求您安装他们的“arile extra”插件,并且该插件有一个 if 语句,该语句取决于您的子主题的名称:

    if( 'ArileWP' == $activate_theme || 'Business Street' == $activate_theme || 'StrangerWP' == $activate_theme || 'NewYork City' == $activate_theme || 'InteriorPress' == $activate_theme || 'Arile WP Child' == $activate_theme ){
            require("inc/arilewp/arilewp.php");
    

    他们的插件有一个默认名称 Arile WP Child,如果您没有将其用作子主题的名称,插件中包含的额外功能将不会执行。

    就我而言,最简洁的解决方案是将我的子主题的名称更改为他们的 php 文件中默认的名称。

    可能与您遇到的问题不同,但这是一个简单的修复,我花了很长时间才缩小范围。

    【讨论】:

      【解决方案2】:

      检查页面“查看源代码”以确保样式表是从父级加载的。当您激活子主题时,它仍会从父主题中提取所有内容,除非您覆盖特定文件(例如:header.php)。

      functions.php 和 style.css 文件是唯一的例外,因为它们补充了相应的父主题文件。

      因此,总而言之,这些样式表应该包含在您的网站中。您的主题设置可能不正确,但如果您处于紧要关头,只需要加载这些样式表,只需通过 functions.php 文件手动添加它们 enqueuing them

      编辑: 当然,子主题样式表是否包含以下为您的主题定制的注释信息?

      /*
      主题名称:二十五岁的孩子
      主题 URI:URI
      说明:二十五儿童主题
      作者:约翰·多伊
      模板:二十五
      版本:1.0.0
      文字领域:二十十五岁
      */

      如果它没有覆盖父样式,则可能是缓存问题。如果您没有任何缓存插件,则可能是您的托管环境或 Cloudflare。如果您可以清除服务器缓存,请使用 Cntrl+F5 刷新浏览器,看看是否有帮助。

      您是否已经尝试将 !important 添加到您的子样式以进行故障排除?您的主题是否有自定义样式选项,可以将样式保存到随每个页面加载的数据库以覆盖父主题?它并不理想,但如果您处于紧要关头,则可以使用。

      对不起,如果我告诉你一些基本的事情,我不确定你的经验水平是什么。

      【讨论】:

      • 所有样式表都会加载,问题是子样式表没有覆盖其他父样式表(位于 /css/ 文件夹下的样式表),而只是位于主目录。
      • 查看我的编辑。另外,现在在子functions.php中注释掉父主题样式的排队,因为在子样式加载后添加它们可能会覆盖子。
      • /* 主题名称:Wizard Child Theme URI:frgraphicsolutions.com/wizard-child 描述:Wizard Child Theme 作者:Fraga Graphic Solutions Author URI:frgraphicsolutions.com 模板:wizard 版本:1.0.1 文件名:style。 css 文件位置:/css/ */
      • "如果它没有覆盖父样式,它可能是缓存问题。" - 情况并非如此,我一直在清除缓存并使用隐身标签。 “您是否已经尝试将 !important 添加到您的子样式中以进行故障排除?” - 我没有尝试过,我可以尝试,但我必须将它添加到每个元素中,不是吗? “您的主题是否有自定义样式选项,可以将样式保存到随每个页面加载的数据库以覆盖父主题” - 我认为可以,但我不应该使用子主题吗?
      • !Important 元素只是为了确保子主题正在加载并且可以作为资源使用。如果他们正在加载,听起来好像是这样,这可能是加载顺序问题。如果您不知道,CSS 的工作原理是,样式离元素“越远”,其优先级越低。 style.css 外部文件的优先级低于页面上的样式标签,其优先级低于内联元素样式。 !Important 覆盖了这个原则
      猜你喜欢
      • 2013-07-13
      • 1970-01-01
      • 1970-01-01
      • 2016-03-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-10-13
      • 2016-11-17
      相关资源
      最近更新 更多