在Wordpress儿童主题中覆盖样式

时间:2015-06-18 15:09:00

标签: css wordpress parent-child

我正在努力自定义此主题:http://themeforest.net/item/ultimate-directory-responsive-wordpress-theme/8043893

根据我在许多网站上使用的协议,我创建了一个子主题。

在这个子主题中,我有一个带有以下代码的style.css文件:

@import url("../ultimate-directory/ud-assets/css/custom.css");
@import url("../ultimate-directory/style.css");

#header {
width: 100%;
border-bottom: 3px solid;
background-color: #fff !important;
}

我在子主题中也有一个带有此代码`

的functions.php文件
<?php
  add_action( 'wp_enqueue_scripts', 'enqueue_parent_styles' );
  function enqueue_parent_styles() {
    wp_enqueue_style( 'parent-style', get_template_directory_uri().'/style.css' );
  } 
?>

但子主题中的style.css不会覆盖父样式。我和主题开发人员来回走动,但他们没有提供解决方案。父主题有一个style.css,但没有任何内容,只是一个注释,说明所有样式都在ud-assets文件夹中的css文件夹中。我尝试覆盖的样式表称为custom.css,这就是我导入它的原因,但我的更改仍然被忽略。

这是父主题header.php中的代码,它调用我认为的样式:     

$cp_preloader_status = get_option(THEME_NAME_S.'_enable_preloader'); 

if( $cp_preloader_status == 'enable' ){
?>
<?php $preloader = get_option(THEME_NAME_S.'_preloader_gif','1'); ?>
<style>
/* Loader */
.loader { background: url("<?php echo CP_THEME_PATH_URL; ?>/ud-assets/img/preloaders/<?php echo $preloader; ?>.gif") no-repeat scroll 50% 50% rgb(249, 249, 249);height: 100%;left: 0;position: fixed;top: 0;width: 100%;z-index: 99999;}

<?php if ( is_page( '563' ) || is_page( '1018' ) || is_page( '1021' ) || is_page( '966' ) || is_page( '812' ) || is_page( '825' ) || is_page( '827' ) || is_page( '961' ) ){ ?>
#main {
margin: 0 !important;   
}
<?php } ?>
</style>
<?php } ?>

1 个答案:

答案 0 :(得分:1)

上面的代码没有加载任何css文件,它确实提供了几个css规则。

您有几个选项可以实际覆盖父文件,这些文件可能会晚于您尝试入队的文件加载,因此后续规则将适用(取决于特定的css规则和{{1}的使用等等。)

  1. 添加您的操作以便稍后加载(实际上您应该检查页面来源以确定这是否是问题)

    !important
  2. 如果要进行微小更改,请使用css选择器的特定协议 例如add_action( 'wp_enqueue_scripts', 'childtheme', 1000 ); 将使用自定义类在nav元素中选择li。如果您想稍后设置嵌套的uls样式,请不要使用nav ul li.custom

  3. 将所有样式出列并再次入队(可能最佳做法是不要加载超过1个css文件

    nav ul li