You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在WordPress中按分类选择性加载样式表(适配文章页)

适配文章页与分类归档页的WordPress分类样式表自动加载方案

问题场景

我在WordPress中为不同分类设置差异化外观(主要是背景差异),此前通过多分支if-else判断分类slug加载对应样式表,代码如下:

<?php
if (in_category('issue91')) { ?>
    <link rel="stylesheet" href="<?php bloginfo('template_url'); ?>/style09-1.css" type="text/css" media="screen" />
<?php } elseif (in_category('issue-10-1')) { ?>
    <link rel="stylesheet" href="<?php bloginfo('template_url'); ?>/style10-1.css" type="text/css" media="screen" />
<?php } elseif (in_category('issue-10-2')) { ?>
        <link rel="stylesheet" href="<?php bloginfo('template_url'); ?>/style10-2.css" type="text/css" media="screen" />
<?php } ?>

当分类数量较少时该方案可行,但随着分类增加到数十个,我改为通过分类slug自动匹配样式表的方式,代码如下:

<?php
$tw_objects = get_queried_object();
$tw_stylesheet = $tw_objects->slug;
?>
<link rel="stylesheet" href="<?php bloginfo('template_url'); echo '/tw_styles/' . $tw_stylesheet; ?>.css" type="text/css" media="screen" />

但此代码仅在分类归档页生效,无法作用于分类下的单篇文章页。

解决方案

问题根源在于:单篇文章页中get_queried_object()返回的是文章对象而非分类对象,因此无法直接获取分类slug。需要针对页面类型分别处理:

<?php
$tw_stylesheet = '';

// 分类归档页:直接获取当前分类的slug
if (is_category()) {
    $category_obj = get_queried_object();
    $tw_stylesheet = $category_obj->slug;
}
// 单篇文章页:获取文章所属分类的slug(取第一个分类,可根据需求调整)
elseif (is_single()) {
    $post_categories = get_the_category();
    if (!empty($post_categories)) {
        $tw_stylesheet = $post_categories[0]->slug;
    }
}

// 仅当获取到有效slug时,加载对应样式表
if (!empty($tw_stylesheet)) {
?>
<link rel="stylesheet" href="<?php bloginfo('template_url'); ?>/tw_styles/<?php echo $tw_stylesheet; ?>.css" type="text/css" media="screen" />
<?php } ?>

代码说明

  • is_category():判断当前是否为分类归档页,此时get_queried_object()返回分类对象,可直接提取slug
  • is_single():判断当前是否为单篇文章页,通过get_the_category()获取文章所属分类列表,取第一个分类的slug(若文章属于多个分类,可修改逻辑优先获取主分类)
  • 增加空值判断:避免因未获取到slug而加载无效的样式表链接

内容的提问来源于stack exchange,提问作者Dylan Tweney

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.13 10:03:29