微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何在 WordPress 和 Timber 中输出附加到类别的 ACF 元字段

如何解决如何在 WordPress 和 Timber 中输出附加到类别的 ACF 元字段

我已为核心帖子类别分配了一个图像字段,并将其输出设置为图像 ID。我已将图像上传到每个类别,并在我的模板中设置了以下 PHP 和 Timber/Twig 代码输出类别内容。核心 wordpress 类别字段(如名称、slug 和描述)都可以正常工作,但 ACF 字段不输出。我尝试了多种输出字段的方法,但似乎没有任何效果

Timber 文档涵盖帖子 (<img src="{{ Image(post.Meta('hero_image')).src }}" />) 的图像和其他字段,但几乎没有涵盖类别和术语 ({{ category.Meta('category_image') }})。后一个例子不起作用。

我尝试转储 {{ dump(category) }},但没有输出与 ACF 字段相关的任何内容

关于我遗漏的任何建议。

非常感谢任何帮助。

干杯

PHP

$context = Timber::context();

$terms = get_terms([
  'taxonomy' => 'category','parent' => '7','orderby' => 'name','order' => 'ASC',]);

$category = new \Timber\Term(get_queried_object());

// Get category_image field from category
// Only works on single category pages
$category_image = get_field( 'category_image',$category );

// Tried this,but still nothing
// Would I need to loop through $terms first?
$category_image = get_field( 'category_image',$terms );

if( $category->parent == 0 ) {
  $templates = array( 'category.twig' );
  $context['categories'] = $terms;
}

Timber::render( $templates,$context );

木材/树枝

{% for category in categories %}
  <div class="category">
    <a href="{{ site.link }}/category/stories/{{ category.slug }}">
      <figure>
        <figcaption>
          {{ category.name }}
        </figcaption>
        <!-- Does not work -->
        {{ category.Meta('category_image') }}
      </figure>
    </a>
  </div>
{% endfor %}

解决方法

如果您希望您的条款与您过去处理 Timber 帖子的方式类似,您需要确保您使用 Timber 提供的功能来获取所有 Timber 功能,而不是核心 WordPress 功能。

>

此外,如果您尝试获取多个类别的图像,您的代码段将不起作用,因为 ACF 的 get_field() 函数不接受 ID/对象数组。这与 Timber 没有直接关系,而是与 ACF 的工作原理有关。

(这不起作用)

// Tried this,but still nothing
// Would I need to loop through $terms first?
$category_image = get_field( 'category_image',$terms );

所以代替

$terms = get_terms( [
  'taxonomy' => 'category','parent'   => '7','orderby'  => 'name','order'    => 'ASC',] );

你应该使用

$terms = Timber::get_terms( [
  'taxonomy' => 'category',] );

这样,您将获得 Timber\Term 对象而不是 WP_Term 对象,就像执行 $category = new \Timber\Term( get_queried_object() ); 时一样。只有这样你才能使用category.meta()

更新 PHP 代码后,您的 Twig 文件应该可以正常工作。您不必遍历 PHP 中的类别来获取所有图像。您可以从

更新 Twig 中类别图像的代码
<!-- Does not work -->
{{ category.meta('category_image') }}

<img src="{{ Image(category.meta('category_image')).src }}" />

小建议 – 确保在 ACF 的 category_image 字段组配置中仅返回图像 ID。这样,ACF 就不必先获取图像信息,可以节省一些性能。

也许你甚至可以替换

<a href="{{ site.link }}/category/stories/{{ category.slug }}">

<a href="{{ category.link }}">

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。