如何在分类页正确展示仅对应当前分类的自定义字段
问题根因
你当前的代码调用get_all_categories()获取了站点全部分类列表,循环输出了每个分类的category_info字段,所以不管访问哪个分类页都会展示所有分类的自定义字段内容。
修复代码
不需要遍历全部分类,直接获取当前访问分类对应的对象,读取单个字段输出即可,参考代码如下:
<?php // 此处替换为你所用程序获取当前分类页对应分类对象的逻辑即可,以下为两种常见实现示例 // 示例1:程序自带获取当前分类的函数(多数CMS都有类似内置方法) $current_category = get_queried_category(); // 示例2:如果需要通过URL参数的分类ID查询,假设你的分类ID参数为cat $cat_id = intval($_GET['cat'] ?? 0); if ($cat_id > 0) { $current_category = Category::getById($cat_id); } // 输出当前分类的自定义字段 if (!empty($current_category)) { $category_info = $current_category->get_field('category_info'); echo is_null($category_info) ? 'no info' : $category_info; } ?>
如果你的Category类没有内置getById方法,也可以从get_all_categories()的返回结果里匹配和当前分类ID一致的对象再读取字段。
内容的提问来源于stack exchange,提问作者Arnold Rothstein
相关产品推荐
相关产品推荐

