---
title: "wordpress不同页面显示不同的sidebar"
url: "https://yjyj.net/learn/wordpress-learn/4657.html"
author: "小 虾 (生猛大蝦编辑部)"
published_at: "2014-06-09T02:30:15+08:00"
updated_at: "2014-06-09T02:30:15+08:00"
categories: "WordPress 学习"
tags: "wordpress, WordPress优化, WordPress开发, 前端开发实战, 网站"
summary: "这篇文章专讲 WordPress 如何让不同页面、不同分类页和文章页显示不同 sidebar。核心做法包括替换 get_sidebar()、按分类 ID 条件加载侧栏，以及用递归函数兼容父分类与子分类，适合想精细控制主题布局的实战用户。"
source: "生猛大蝦 (https://yjyj.net)"
---

# wordpress不同页面显示不同的sidebar

> 来源：[生猛大蝦 (yjyj.net)](https://yjyj.net/learn/wordpress-learn/4657.html) · 作者：小 虾 · 发布时间：2014-06-09

## 30 秒核心看点 (TL;DR)

- 单页可把 get_sidebar() 改成 get_sidebar('one')，直接调用指定侧栏文件。
- 分类页与文章页可按分类 ID 条件 include 不同 sidebar，支持多个分类。
- 父分类带子分类时，用递归函数判断后代分类，避免手动逐个填写 ID。

第一，比如你建立了一个单独的page页面：page-abc.php，仅仅需要在这个页面显示特定的侧栏，比如sidebar-one.php，那么就在page-abc.php中找到下面的代码： 

```

```

 

替换成： 

```

```

 

这样就直接调用需要显示侧栏。


第二、如果需要不同的文章分类，如电脑网络，其分类页面（就是点击“电脑网络”进入的那个页面），即主题中archive.php呈现出来的页面，以及该分类下文章的单独页面，就是点击“电脑网络”下所属“文章”进入的页面，即主题总single.php所呈现的页面，显示特定的侧栏，比如sidebar-two.php，那么首先请找到这个分类的ID：在后台“文章Post”-“分类Categories”目录下，把鼠标放到该分类名称上，看浏览器状态栏，或直接点击该分类，看浏览器地址栏： 

```
……edit&taxonomy=category&tag_ID=123&post_type=post
```

 

其中123就是其ID。

然后写入代码： 

```

```

 

如果你想让ID为456的分类页面及该分类下文章的单独页面也显示sidebar-two.php，那就简单的不得了，将上述代码稍作调整： 

```

```

 

但是如果你想让ID为789的分类页面及该分类下文章的单独页面显示sidebar-three.php，则应为： 

```

```

 

注意：上面第4行支持1个ID，要想包含多个ID，则需要像第2行，应用array。另外，按官方的CODEX中所示，ID部分也可以换成slug。

还有一种情况，就是你希望ID为10的分类及其子分类，各分类页面及分类下文章的单独页面显示sidebar-four.php的侧栏，而且子分类比较多，按照上面的方法，仅填父级分类的ID或者slug是不行的，必须把父级分类及子分类全部填上才行，就比较麻烦啦，那有什么办法吗，当然有！首先在archive、single等页面中加入以下代码： 

```

```

 

紧接着，需要把上面的上面的那部分代码稍作调整： 

```

```

 



感谢:http://imdoc.net/computer-and-internet/wordpress-program/2021.html

## 延伸问答与排错指南 (FAQ)

### WordPress 单独页面怎么显示指定侧栏？
在对应的 page 模板里，把 get_sidebar() 改成 get_sidebar('one') 这类写法即可。前提是主题中存在对应的 sidebar-one.php 文件，这样该页面就会单独加载指定侧栏，而不影响其他页面。

### 分类页和文章页如何按分类显示不同侧栏？
可在 archive.php、single.php 等模板中用 in_category() 判断分类 ID，再用 include 加载对应的 sidebar 文件。多个分类可写成数组；若有多个分支条件，建议用 if/elseif 逐层区分，避免逻辑冲突。

### 父分类和子分类都要显示同一侧栏怎么办？
不要只写父分类 ID，因为子分类不会自动全部命中。文章里给出的方法是先定义一个判断后代分类的函数，再用“父分类 ID || 后代分类判断”来加载同一个 sidebar，这样父子分类都能统一显示。

---
更多 Linux 运维、WordPress 性能优化、前端工程化、Shopify 独立站与极客折腾指南：[生猛大蝦全站文章归档 (https://yjyj.net/archive)](https://yjyj.net/archive)
