如何根据使用的标签设置不同的WordPress页面样式?

时间:2020-04-02 作者:Kristýna Šulcová

我想这可以通过向页面模板添加自定义CSS来实现。我有这样一个页面模板:

<?php
/*
 * Template Name: Grafy Full Width
 */

/*add_filter(\'materialis_full_width_page\', \'__return_true\');*/

materialis_get_header();
?>
    <div <?php echo materialis_page_content_atts(); ?>>
        <div class="grafy-full-width-content">
            <?php
            while (have_posts()) : the_post();
                the_content();
            endwhile;
            ?>
        </div>
    </div>

<?php get_footer(); ?>
我想我可以像这样添加CSS(基本上我有10个主标记,我需要做的就是更改标题背景,所以我可以只添加10个单行CSS文件,并像这样处理它们):

<?php function wpse_enqueue_page_template_styles() {
    if (has_tag(\'Lesy\')) {
        wp_enqueue_style( \'Lesy\', get_template_directory_uri() . \'/css/Lesy.css\' );
    }
}
add_action( \'wp_enqueue_scripts\', \'wpse_enqueue_page_template_styles\' );?>
不管我做什么,这都行不通。我会做错什么?非常感谢!

2 个回复
最合适的回答,由SO网友:Tom J Nowell 整理而成

如果您使用body_classpost_class 模板标签,您可以添加一个CSS类,该类包含一篇文章的所有标签和术语的类,您可以使用这些类来有条件地为文章设置样式,而无需有条件地将样式表排队

SO网友:Elex

您正在使用has_tag 循环外部。您必须将帖子ID添加到has_tag. 我还添加property_exists 确保我们有一个post对象并避免警告。

function wpse_enqueue_page_template_styles() {
    global $post;

    if (property_exists($post, \'ID\') === true && has_tag(\'Lesy\', $post->ID)) {
        wp_enqueue_style( \'Lesy\', get_template_directory_uri() . \'/css/Lesy.css\' );
    }
}
add_action( \'wp_enqueue_scripts\', \'wpse_enqueue_page_template_styles\' );