使用 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 列表视图:
我正在创建一个选项页面,以便我可以订购自定义 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 列表视图: