栏目描述需查数据库或CMS接口获取,PHP无内置函数;常见于CMS如Dedecms(arctype表description字段)、WordPress(get_category_by_slug()返回对象的description属性)及自定义系统,须注意字段名、SQL注入防护、缓存与字符集。

栏目描述通常不在 $_GET 或 $_POST 里,得查数据库或 CMS 接口
PHP 本身没有内置“获取栏目描述”的函数,所谓“栏目描述”是业务概念,常见于 CMS(如 Dedecms、ThinkPHP 自定义模型、WordPress 分类描述等)。它一般存于数据库某张表的某个字段(比如 arctype 表的 description 字段,或 categories 表的 meta_description 字段),不会自动注入到超全局变量中。
实操建议:
立即学习“PHP免费学习笔记(深入)”;
- 先确认你用的是什么系统:Dedecms?Typecho?自研后台?查看后台编辑栏目时提交的字段名和对应数据库结构
- 如果是原生 PHP + MySQL,用
mysqli_query()或PDO::query()查指定栏目 ID 对应的描述字段 - 别直接拼接
$_GET['id']到 SQL,必须用intval()或预处理防止注入
在 Dedecms 中读取栏目描述要调用 GetOne() 或 ChannelUnit 类
Dedecms 的栏目信息默认缓存在 arctype 表,模板里常用 {dede:field.description/},但 PHP 脚本中需手动查库。官方不推荐直接写 SQL,而是复用其数据库类。
实操建议:
立即学习“PHP免费学习笔记(深入)”;
- 确保已引入数据库类:
require_once(dirname(__FILE__).'/include/common.inc.php'); - 用
$dsql->GetOne("SELECT description FROM `#@__arctype` WHERE id={$typeid}");获取结果,注意$typeid必须是整型且已赋值 - 若在列表页或内容页,
$refObj->Fields['typeid']或$refObj->Fields['reid']可能提供当前栏目 ID,避免硬编码 - 描述字段可能为空,记得用
trim()和空值判断,否则输出空白标签
get_category_by_slug() 在 WordPress 中返回对象,描述在 description 属性里
WordPress 把栏目(分类)当作 term 管理,描述内容存在 wp_terms 表的 description 字段,但实际调用应走 API 函数而非直查数据库。
实操建议:
立即学习“PHP免费学习笔记(深入)”;
- 用
get_term_by('slug', 'news', 'category')或get_category_by_slug('news')获取分类对象 - 返回对象的
description属性即为栏目描述,不是name或term_id - 该函数在主题
functions.php或插件中可用,但在wp-config.php或纯 HTML 页面里不可用——必须确保 WordPress 加载完成 - 如果描述含 HTML 标签(如
),输出前建议用wp_strip_all_tags()过滤,避免破坏页面结构
自定义系统中别忽略缓存和字段命名歧义
很多团队自己建栏目表,但字段命名五花八门:desc、summary、seo_desc、intro 都可能出现。更麻烦的是,有些系统把描述存在独立 SEO 表里,靠栏目 ID 关联。
实操建议:
立即学习“PHP免费学习笔记(深入)”;
- 先用 phpMyAdmin 或
DESCRIBE table_name查清字段真实名称,不要凭经验写description - 如果栏目数据被频繁读取,加一层 Redis 或 APCu 缓存,键名建议包含栏目 ID 和字段名,例如
cat_desc_123 - 注意字符集:MySQL 若用
utf8mb4,PHP 查询后要确保 header 或 HTML meta 声明一致,否则中文显示为问号 -
前端常把“栏目描述”和“栏目标题”混淆,后端接口返回时建议明确字段名,比如统一用
category_description,避免前端误读title
真正卡住人的往往不是语法,而是不知道描述字段存在哪张表、叫什么名、有没有被 SEO 插件重写、是否受多语言开关影响。查数据库比翻文档快,但得先知道查哪张表。











