为什么 Taxonomy 列表页面无法正常调用ACF字段

在 WordPress 中,ACF(Advanced Custom Fields)字段通常是在特定的页面或者自定义文章类型中使用的。当你创建一个页面时,你有直接的编辑权限,并且可以在页面编辑器中添加和显示 ACF 字段。但在分类(taxonomy)列表页面上,情况可能会有所不同。

通常情况下,WordPress 默认的分类(taxonomy)页面是由系统生成的,内容是动态获取的,而不是通过页面编辑器直接编辑的。在这种情况下,你需要通过编程的方式调用 ACF 字段并将其显示在分类页面上。

下面是一些可能导致无法在分类页面上调用 ACF 字段的常见原因以及解决方法:

  1. 模板问题: 确保你正在使用的分类(taxonomy)页面模板正确地调用了 ACF 字段。检查你的 category.php 或者自定义分类模板文件是否包含了正确的 ACF 调用代码。
  2. ACF 条件: 如果你在 ACF 中设置了特定的条件,确保这些条件适用于分类页面。在 ACF 中,你可以使用条件规则来控制字段的显示,例如基于页面类型、分类、标签等。
  3. 分类页面的正确性: 确保你正在查看的是实际的分类页面,而不是错误的页面。你可以在 WordPress 后台的“分类”部分找到你的分类列表,然后点击查看分类链接。
  4. ACF 字段位置规则: 在 ACF 中,你需要设置字段的位置规则,以确定字段应该在哪些页面或者文章类型中显示。确保你的字段设置包含了正确的位置规则,以便在分类页面中显示。

如果你仍然无法解决问题,可能需要检查你的主题或者插件是否与 ACF 兼容,或者考虑使用专门的插件来在分类页面中添加自定义字段。

调用ACF字段

如果需要调用如何做?

在 WordPress 的分类(taxonomy)页面上,你可以通过编程的方式调用 ACF(Advanced Custom Fields)字段并将其显示。以下是一个基本的示例代码,你可以将其添加到你的主题的 category.php 文件或者自定义分类模板文件中:

简单情况1:没有分组,并且只是在page页面前台获取字段内容:

前台获取相应自定义字段的内容的话需要用到

<?php the_field($field_name, $post_id); ?>

1、$ field_name:要检索的字段的名称(就是上面让填写英文名称的那个),例如“page_content” (必填)。

2、$ post_id:输入值的特定帖子 ID。默认为当前帖子 ID 不需要(比如在循环获取文章中以及文章页中不需要填写)。这也可以是选项/分类/用户等。

复杂情况2:在分类列表页,还是多分组,每个分组多字段的情况:

如果你有两个ACF组,并且每个组下有各自的字段,你可以通过使用ACF的函数来逐个调用这些字段。对于每个组,你可以通过传递组的名称和字段的名称来获取相应字段的值。

以下是一个示例代码,演示如何在WordPress分类页面中调用两个ACF组的字段值:

<?php
// 获取当前分类页面的ID
$category_id = get_queried_object_id();

// 获取第一个ACF组的字段值
$group1_field1_value = get_field('group1_field1', 'category_' . $category_id);
$group1_field2_value = get_field('group1_field2', 'category_' . $category_id);
// ... 依此类推,获取第一个组的所有字段值

// 获取第二个ACF组的字段值
$group2_field1_value = get_field('group2_field1', 'category_' . $category_id);
$group2_field2_value = get_field('group2_field2', 'category_' . $category_id);
// ... 依此类推,获取第二个组的所有字段值

// 输出字段值
echo 'Group 1 - Field 1 Value: ' . $group1_field1_value;
echo 'Group 1 - Field 2 Value: ' . $group1_field2_value;
// ... 依此类推,输出第一个组的所有字段值

echo 'Group 2 - Field 1 Value: ' . $group2_field1_value;
echo 'Group 2 - Field 2 Value: ' . $group2_field2_value;
// ... 依此类推,输出第二个组的所有字段值
?>

确保将 'group1_field1''group1_field2' 替换为你第一个组中实际字段的名称,将 'group2_field1''group2_field2' 替换为你第二个组中实际字段的名称。

这种方式虽然可以实现目标,但如果你的字段较多,代码会显得冗长。为了使代码更简洁和易维护,你可以考虑使用循环结构来遍历字段,以减少重复的代码段。

滚动至顶部