使用 ACF 关系选项字段订购木材帖子

Using ACF Relationship Options field to order Timber Posts

我正在创建一个选项页面,以便我可以订购自定义 post 类型的条目。出于某种原因,我可以遍历所选条目(元素出现在 DOM 中),但我无法从中获取数据 - 即标题、link、图像等

$context['service_options'] = get_field('service_pages', 'options');
Timber::render( $templates, $context );


{% for post in service_options %}
{{post.id}} {{ post.title }}
<a class="service-card grid-item" href="{{post.link}}" >
    <div class="image-wrapper">
    <h2>{{post.title}}</h2>
    <img src="{{ Image(post.meta('listing_image')).src }}">
    <div class="overlay">
    </div>
    </div>
</a>
{% endfor %}

我猜你的service_pages字段是一个ACF关系字段。在字段设置中,您可以告诉 ACF return post ID 或完整的 post 对象。当您 return post 对象时,这些对象将是 WP_Post 的实例,但您需要 Timber\Post 的实例才能使所有功能正常工作。设置方法如下。

PHP:

$service_options = get_field( 'service_pages', 'options' );

$service_options = array_map( function( $page ) {
    // Convert whatever $page is to a Timber\Post.
    return new Timber\Post( $page );
}, $service_options );

$context['service_options'] = $service_options;

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

Twig 中,它甚至可能更简单:

{% for post in Post(service_options) %}
    {{post.id}} {{ post.title }}
    {# ... #}
{% endfor %}

此处,Post() 函数会将 service_options 数组中的所有内容转换为 Timber Posts。

为自定义 Post 类型订购 posts – 而不是使用单独的关系字段 – 您还可以使用以下插件之一直接订购 posts posts 列表视图: