我已经设置了一个高级自定义字段项目,以在每个类别和顶部的顶部显示特色图像,描述等。存档自定义帖子类型。
自定义帖子类型&分类是
$event_args = array(
'has_archive' => 'news-events',
'exclude_from_search' => false,
'publicly_queryable' => true,
'rewrite' => $event_rewrite,
'capability_type' => 'post',
);
register_post_type( 'events', $event_args );
register_taxonomy( 'event_category', array( 'events' ), $events_args );
在archive-events.php中我有
$context['pagination'] = Timber::get_pagination();
$context['title'] = 'Archive Tours';
$context['posts'] = Timber::get_posts();
$content['events'] = Timber::get_terms('event_category');
Timber::render($templates, $context);
在Twig文件中
<div class="col-sm-12 col-md-12">
<article class="post post-container">
<div class="entry-header">
<div class="post-thumb thumb">
{% if events.featured_event_image %}
<img src="{{TimberImage(events.featured_event_image).src}}" alt="{{ events.featured_event_title }}"
class="img-responsive" />
{% else %}
{# TODO: replace this with something we serve. #}
<img src="http://placehold.it/500x340" alt="Default Thumbnail" class="img-responsive">
{% endif %}
</div>
</div>
<div class="sa_blog_content">
<div class="sa_blog_center">
<h4 class="sa_blog_title"><a target="_self" title="{{ events.featured_event_title }}" href="#">{{
events.featured_event_title }}</a></h4>
<div class="meta">
<span><time datetime="{{post.post_date|date('F j, Y')}}">{{post.post_date|date('F j, Y')}}</time></span>
<span>359 Views</span>
</div>
</div>
{{ events.featured_event_summary }}
<div class="tagcloud">
{% for term in post.terms('featured_event_tags') %}
<span><a href="{{post.term.link}}" title="{{post.term.name}}">{{post.term.name}}</a></span>
{% endfor %}
</div>
</div>
</article>
</div>
然而,我的Custome字段在Archive或Category页面中都不可用。任何人都可以建议解决这个问题。提前谢谢......
答案 0 :(得分:1)
当您使用Timber::get_terms()
时,您将得到一个数组作为回报。
您可能需要遍历{% if events.featured_event_image %}
中的元素,而不是检查是否存在events
的自定义字段:
{% for event in events %}
{% if event.featured_event_image %}
{# your code #}
{% endif %}
{% endfor %}
或者您可以使用
直接访问数组的第一个元素{% if event[0].featured_event_image %}
以同样的方式,{{ events.featured_event_summary }}
将不会显示,因为在数组中找不到字段featured_event_summary
,但可能存在于数组的每个元素中。
当您使用{% for term in post.terms('featured_event_tags') %}
时,您要求获取分配给该帖子的featured_event_tags
分类的所有条款。从您的代码摘录中我可以看到您只注册event_category
作为分类。在您的屏幕截图中,我可以看到featured_event_tags
是分类event_category
上设置的自定义字段的名称。
要获得帖子的条款,您应该:
{% for term in post.terms('event_category') %}
在此for循环中,您似乎尝试获取该字词的链接和名称,但您可以使用{{ post.term.link }}
从帖子中访问该字词。可能应该是
{% for term in post.terms('event_category') %}
{{ term.link }}
{{ post.term }}
无法使用,因为term()
不是Timber的Post类的方法。只有terms()
方法,可以为您分配一个帖子。
这些都可能是您的代码中没有任何内容出现的原因。请记住,您也可以{{ dump( variable ) }}
检查Twig中变量的内容。
如果您仍然遇到困难,请使用更多代码更新您的问题,我可以更新此答案。