PHP怎样获取指定ID栏目信息_PHP按ID取栏目信息方法【查询】
发布时间 - 2026-02-02 00:00:00 点击率:次优先用 get_category() 获取单个栏目信息,需传入整型 ID 并判空;非 WordPress 项目用 PDO 预处理查询;get_term() 更通用,get_categories() 不适用于单条查询。
用 get_category() 获取单个栏目信息(WordPress 场景)
如果你在 WordPress 主题或插件里开发,get_category() 是最直接的方式。它接收一个整数 ID,返回一个 WP_Term 对象(WordPress 4.4+)或 stdClass 对象(旧版),包含名称、别名、描述、父级等字段。
常见错误是传入字符串 ID 或未检查返回值是否为空——ID 不存在时函数返回 false,不加判断直接取 $cat->name 会触发 PHP Notice。
- 确保传入的是整型:
(int) $cat_id,避免 SQL 注入风险(虽然该函数不拼 SQL,但 ID 类型校验仍是好习惯) - 必须判空:
if ( $cat = get_category(123) ) { echo $cat->name; } - 注意:该函数默认不缓存结果,高频调用建议配合
wp_cache_get()手动缓存
原生 PHP + MySQL 查询栏目(非 WordPress)
若你用的是自定义 CMS 或纯 PHP 项目,直接查数据库即可。假设栏目表叫 categories,主键为 id,推荐用 PDO 预处理防止注入:
$stmt = $pdo->prepare("SELECT * FROM categories WHERE id = ?");
$stmt->execute([$cat_id]);
$cat = $stmt->fetch(PDO::FETCH_ASSOC);
容易踩的坑:
- 没设
$cat_id类型约束,用户传'1 OR 1=1'会出问题 —— 预处理能防,但变量本身也建议先filter_var($cat_id, FILTER_VALIDATE_INT) - 查不到时返回
false或空数组,别直接访问$cat['name'],先用isset($cat['id'])判断 - 如果栏目有层级(如 parent_id 字段),且需要获取完整路径(如 “新闻 > 国内 > 北京”),不能只查一行,得递归或 JOIN 向上查父级
get_term() 和 get_categories() 的区别与选型
WordPress 中常有人混淆这三个函数:
-
get_category(123):专用于分类目录(category taxonomy),ID 是 term_id,返回单个对象 -
get_term(123, 'category'):更通用,支持任意自定义分类法(如product_cat),同样返回单个 term,但需显式指定 taxonomy -
get_categories(['include' => 123]):返回数组,即使只 include 一个 ID,结果也是[0] => object,多此一举且性能略差
结论:要单条记录,优先用 get_category() 或 get_term();别用 get_categories() 去“模拟单查”,它本质是列表接口。
ID 不存在或栏目被删除后的表现
无论用哪种方式,ID 无效时行为一致:返回 false 或空结果。但容易被忽略的是「栏目被禁用但未删」的情况 —— 比如某些 CMS 用 status 字段标记启用状态('publish' / 'draft'),此时 SQL 查询必须加上 AND status = 'publish',否则可能返回已下线的栏目信息。
另一个隐藏点:缓存失效。如果栏目信息被更新(比如名称改了),但代码层用了文件缓存或 APCu 缓存且没主动清理,get_category() 可能仍返回旧数据 —— 这类问题往往排查半天才发现不是逻辑错,是缓存没刷新。
# mysql
# php
# word
# go
# wordpress
# cms
# 区别
# sql
# echo
# Object
# if
# include
# filter_var
# pdo
# 整型
# 字符串
# 递归
# int
# 接口
# 对象
# 数据库
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
Laravel的Blade指令怎么自定义_创建你自己的Laravel Blade Directives
Laravel Vite是做什么的_Laravel前端资源打包工具Vite配置与使用
如何在Windows环境下新建FTP站点并设置权限?
潮流网站制作头像软件下载,适合母子的网名有哪些?
laravel怎么用DB facade执行原生SQL查询_laravel DB facade原生SQL执行方法
Laravel怎么导出Excel文件_Laravel Excel插件使用教程
php静态变量怎么调试_php静态变量作用域调试技巧【解答】
香港代理服务器配置指南:高匿IP选择、跨境加速与SEO优化技巧
利用python获取某年中每个月的第一天和最后一天
香港服务器WordPress建站指南:SEO优化与高效部署策略
Win11怎么开启自动HDR画质_Windows11显示设置HDR选项
Laravel如何获取当前登录用户信息_Laravel Auth门面使用与Session用户读取【技巧】
laravel怎么为应用开启和关闭维护模式_laravel应用维护模式开启与关闭方法
制作旅游网站html,怎样注册旅游网站?
laravel怎么在请求结束后执行任务(Terminable Middleware)_laravel Terminable Middleware请求结束任务执行方法
详解一款开源免费的.NET文档操作组件DocX(.NET组件介绍之一)
浅谈Javascript中的Label语句
如何用AI帮你把自己的生活经历写成一个有趣的故事?
佐糖AI抠图怎样调整抠图精度_佐糖AI精度调整与放大细化操作【攻略】
制作网站软件推荐手机版,如何制作属于自己的手机网站app应用?
如何在 React 中条件性地遍历数组并渲染元素
想要更高端的建设网站,这些原则一定要坚持!
黑客入侵网站服务器的常见手法有哪些?
HTML透明颜色代码怎么让下拉菜单透明_下拉菜单透明背景指南【技巧】
CSS3怎么给轮播图加过渡动画_transition加transform实现【技巧】
php后缀怎么变mp4格式错误_修改扩展名提示格式不对怎么办【技巧】
专业企业网站设计制作公司,如何理解商贸企业的统一配送和分销网络建设?
如何在阿里云部署织梦网站?
网站建设保证美观性,需要考虑的几点问题!
如何快速启动建站代理加盟业务?
Win11怎么关闭资讯和兴趣_Windows11任务栏设置隐藏小组件
Edge浏览器提示“由你的组织管理”怎么解决_去除浏览器托管提示【修复】
东莞市网站制作公司有哪些,东莞找工作用什么网站好?
如何确认建站备案号应放置的具体位置?
高防服务器:AI智能防御DDoS攻击与数据安全保障
Laravel如何处理CORS跨域问题_Laravel项目CORS配置与解决方案
Laravel DB事务怎么使用_Laravel数据库事务回滚操作
Android利用动画实现背景逐渐变暗
如何在HTML表单中获取用户输入并用JavaScript动态控制复利计算循环
Laravel的HTTP客户端怎么用_Laravel HTTP Client发起API请求教程
微信小程序 wx.uploadFile无法上传解决办法
Laravel如何处理文件下载请求?(Response示例)
Laravel的路由模型绑定怎么用_Laravel Route Model Binding简化控制器逻辑
中国移动官方网站首页入口 中国移动官网网页登录
微信小程序 闭包写法详细介绍
如何用IIS7快速搭建并优化网站站点?
ChatGPT回答中断怎么办 引导AI继续输出完整内容的方法
高防服务器租用如何选择配置与防御等级?
Laravel如何实现图片防盗链功能_Laravel中间件验证Referer来源请求【方案】
Bootstrap整体框架之CSS12栅格系统


