一个网站。一个主题。没有插件的多个样式表?

时间:2017-01-05 作者:Joe A Simpson Jr

问候社区,

Here’s my challenge: 我们有一份每年出版的年度报告。我们确实不想每年创建一个新的站点和域,但要在同一站点上放置前一年的版本。

The kicker is this — 每年都有一个独特的设计,但网站的大部分功能和特点保持不变。是否有办法将每年的报告存放在同一网站上,并为每组年度报告页面分配不同的样式表?

我已经能够用多种语言创建新的帖子/页面,加载各种菜单,但没有成功地将单独的CSS加载到特定页面。

我在WordPress开发方面相对较新,不想使用插件,希望在模板级别编写干代码,每年有条件地调用适当的样式表,而不必担心插件/核心兼容性或更新。

例如:

2017年的一组页面/帖子已加入样式表(带有自己的菜单);2016年有一组不同的页面/帖子,其中有另一个样式表、菜单等。这可能吗?如果是的话,这是什么要求的研究目的。法典中是否有这样做的文档?这算是排队吗,其他人?

提前感谢您的帮助

2 个回复
SO网友:Ben HartLenn

一个可能满足您需求的简单解决方案是使用body\\u class()将当前帖子或页面的发布年份添加到您的正文中,然后将每年的适当样式添加到样式表中。

在这里,我向html添加了一个新的css类<body> 类似“.2016年”的元素使用get_the_date() 填写年份。请注意,您应该始终在body标记中使用body\\u class():

<body <?php body_class( \'year-\' . get_the_date(\'Y\') ); ?>>
我怀疑这将是一个过于简单和宽泛的笔划,并且您将希望有条件地将这个css类添加到您的正文中,例如,仅当它是用户正在查看的页面或单个帖子时。否则,请正常加载body标签:

<?php if( is_page() || ( is_post() && is_single() ) ) { ?>
         <body <?php body_class( \'year-\' . get_the_date(\'Y\') ); ?>>
    <?php } else { ?>
        <body <?php body_class(); ?> >
<?php } ?>
然后在主样式表中,您可以为2016年发布的帖子和页面设置任何菜单和其他元素的样式。例如,主菜单可以有不同的背景颜色:

.year-2016 .main-menu {
    background: #0cf;
}
这种方法将是非常动态的,并且几乎不需要额外的代码来实现不同年份主题的新CSS。

SO网友:Magnus Guyra

你可以在这里找到我的答案(或修改后的答案):https://wordpress.stackexchange.com/a/251113/110059

例如,您可以在年报的帖子中添加一个自定义字段,给出样式表的名称,并使用我的代码的修改版本从自定义字段中获取样式表的名称(而不是获取标记)并加载它。

相关推荐

在带有PHP的子主题中包含style.css

在里面https://codex.wordpress.org/Child_Themes 这是包含样式的最佳实践。css在子主题中,必须将下面的代码放入函数中。php的子主题,但将“父样式”替换为可以在函数中找到的父主题的参数。父主题的php。我在我的主题文件中找不到它,那里也没有多少代码。使用@import包含父主题样式表的方法不适用于我,放入文件的css不会在任何浏览器的站点上显示自己。function my_theme_enqueue_styles() { $parent_s