Php 如何在Wordpress页面模板上优先考虑一个样式表?

Php 如何在Wordpress页面模板上优先考虑一个样式表?,php,wordpress,Php,Wordpress,我使用的是wordpress子主题,我有两个页面模板,一个是默认模板,另一个是我调用的full page.php 我的style.css已经覆盖了父主题中的样式表,并且鉴于full page.php模板只有一些区别,我希望它的样式表-full page.css使用style.css中的css(来自父主题和子主题),并在需要时对其特定模板进行必要的重写 我的问题是,目前,我在full page.css中编写的任何css代码都将在正确的模板上运行-full page.php,但前提是style.cs

我使用的是wordpress子主题,我有两个页面模板,一个是默认模板,另一个是我调用的
full page.php

我的
style.css
已经覆盖了父主题中的样式表,并且鉴于
full page.php
模板只有一些区别,我希望它的样式表-
full page.css
使用
style.css
中的css(来自父主题和子主题),并在需要时对其特定模板进行必要的重写

我的问题是,目前,我在
full page.css
中编写的任何css代码都将在正确的模板上运行-
full page.php
,但前提是
style.css
中没有指定任何内容

例如,如果我想在
full page.php
模板上将标题的颜色更改为红色,
background color:red
将在添加到
full page.css
时起作用,但是如果我已经在默认模板上指定了
background color:orange
,则
style.css
,它将覆盖整个第一页

使用
!重要提示
有效,但我宁愿避免这种情况,因为它可能会在以后导致进一步的问题。我有没有办法优先考虑
full page.css
,并允许它继续使用默认的主题样式表以及我在
style.css
中所做的更新

<?php

 function my_et_enqueue_styles() {  

if (is_page_template('page-templates/full-page.php')) {

    wp_enqueue_style( 'parent-style', get_template_directory_uri() . '/style.css' );
    wp_enqueue_style( 'artwebsite-full-page', get_stylesheet_directory_uri() . '/css/full-page.css', array( 'parent-style' ) );

}

else { 

     wp_enqueue_style( 'parent-style', get_template_directory_uri() . '/style.css' );

}

    
wp_enqueue_script( 'divi', get_stylesheet_directory_uri() . '/js/scripts.js', array( 'jquery', 'divi-custom-script' ), '0.1.1', true );


}

add_action( 'wp_enqueue_scripts', 'my_et_enqueue_styles' );

使级联中较早出现的样式表中的样式覆盖级联中较晚出现的样式表的正确方法是使用!重要的

注意:CSS=层叠样式表

如果希望full-page.css中的所有样式覆盖style.css中的样式,则可以在style.css之后加载full-page.css


如果要覆盖特定样式,则需要使用!重要信息。

您需要具有与上次加载的元素具有相同特性的样式表。()

因此,请确保在style.css之后加载特定的(full-page.css)

您可以通过更改使full-page.css依赖于另一个来实现这一点,因此它们级联在这里是一个来自答案()的示例

因此,在您的子主题函数.php中添加:

add_action( 'wp_enqueue_scripts', 'my_childtheme_add_stylesheets' );

function my_childtheme_add_stylesheets() {
    wp_enqueue_style( 'my-child-style', get_stylesheet_directory_uri() . '/style.css', false, '1.0', 'all' );
    wp_enqueue_style( 'artwebsite-full-page', get_stylesheet_directory_uri() . '/css/full-page.css', array( 'my-child-style' ) );
}

嗨,蒂莫西,我宁愿避免使用!重要的。我在早期项目中构建了一个主题,但我从未在儿童主题中尝试过。您提到我可以在style.css之后加载full-page.css-您知道我如何编辑代码来实现这一点吗?我对PHP非常陌生,所以任何建议都将不胜感激。嗨,Ryan,谢谢你的回答。你说的是
array
命令吗?我在上面的代码中使用了这一点,我能看到的唯一其他区别是
if
else
命令,我需要这些命令来区分页面模板。style.css是一种用于主题化的特殊样式。您使用的是子主题吗?你能提供更多关于父主题和脚本加载顺序的信息吗?只要您的full-page.css最后加载,它就应该优先。您可以查找加载的最后一个样式表,并将其设置为从属样式表。我使用的是divi主题。我刚刚查看了页面源代码,它首先加载了主题样式表,然后加载了整个页面(这意味着是从属页面),最后加载了style.css。我不确定它为什么最后加载主子主题样式表,但我不能真正使其成为从属样式表,因为这是我放置大部分样式的地方,它需要加载到默认模板上。有没有一种方法可以使整个页面样式表依赖于style.css并更改加载顺序以使其排在最后?这很有效,我已设法使它们以正确的顺序加载,但由于某些奇怪的原因,样式仍被覆盖。。我想我会去主题开发者论坛看看是否能找到答案。感谢您的帮助Ryan:)原来我的子样式表的id选择器错误,导致它被加载两次并覆盖了我的第二个样式表。
add_action( 'wp_enqueue_scripts', 'my_childtheme_add_stylesheets' );

function my_childtheme_add_stylesheets() {
    wp_enqueue_style( 'my-child-style', get_stylesheet_directory_uri() . '/style.css', false, '1.0', 'all' );
    wp_enqueue_style( 'artwebsite-full-page', get_stylesheet_directory_uri() . '/css/full-page.css', array( 'my-child-style' ) );
}