使用 TIMBER 在自定义 post 类型的存档页面上显示 SELECT 字段

Displaying SELECT field on custom post type archive page using TIMBER

我有一个自定义 post 类型事件,它有一个 SELECT 字段,用于获取另一个自定义 post 类型列表的 Post 对象。所以我们有一个事件,我们想要 select 附加到它的企业列表,以便我们可以显示企业的联系信息(phone、地址等)。

functions.php

function register_post_types() {
    register_post_type( 'swfl_listing', array(
        'labels'             => array(
            'name'          => __( 'Listings' ),
            'singular_name' => __( 'Listing' )
        ),
        'rewrite'         => array(
            'slug'       => 'destinations/listings',
        ),
        'public'             => true,
        'publicly_queryable' => true,
        'show_ui'            => true,
        'show_in_menu'       => true,
        'query_var'          => true,
        'capability_type'    => 'post',
        'has_archive'        => true,
        'supports'           => array( 'title', 'thumbnail', 'editor', 'revisions', 'author', 'comments' ),
        'menu_icon'          => 'dashicons-businessman',
    ) );

    register_post_type( 'swfl_event', array(
        'labels'             => array(
            'name'          => 'Events',
            'singular_name' => 'Event',
        ),
        'rewrite'         => array(
            'slug'       => 'discover/events',
        ),
        'public'             => true,
        'publicly_queryable' => true,
        'show_ui'            => true,
        'show_in_menu'       => true,
        'query_var'          => true,
        'capability_type'    => 'post',
        'has_archive'        => true,
        'supports'           => array( 'title', 'thumbnail', 'editor', 'revisions', 'comments' ),
        'menu_icon'          => 'dashicons-calendar-alt',
    ) );
}

function add_to_context( $context ) {
    ...
    $context['events'] = Timber::get_posts( array(
        'post_type'      => 'swfl_event',
    ) );
    ...
}

我搜索并找到了这行代码,它允许我在作为自定义字段的单一页面 listing_sponsoring_event 上获取信息。

single.php & archive.php

...
$context['listing'] = new TimberPost( $post->listing_sponsoring_event );
...

这是单个页面上的工作代码

单-swfl_event.twig

...
<strong>Where: </strong> {{ listing.title }} <br/>
<strong>Price: </strong> {{ post.get_field('event_price') }} <br/>
...

但是如果我把它放到 archive.php 中,同样的代码就不起作用了。它只显示循环中的最后 post 信息。

存档-swfl_event.twig

...
{% for post in posts %}
    ...
    <strong>Where: </strong> {{ listing.title }} <br/>
    <strong>Price: </strong> {{ post.get_field('event_price') }} <br/>
    ...
{% endfor %}
...

编辑: 我无法使用 Timber/Twig 找出任何东西(也没有回应),但是我将这个问题悬而未决,以防万一它最终被弄清楚。现在我正在使用带有 PHP 的函数来获取信息。这不是一个很好的解决方案。

希望 Timber 最终会更新以支持更多 SELECT 和 WP Post 对象。

所以我的问题实际上只是使用 WP Post 对象以及如何获取它的信息。对于同样有问题的任何人:

而不是{{ post.custom_field_name }},使用{{ post.get_field('custom_field_name') }}访问对象信息。 {{ post.custom_field_name }} 只给我对象的 ID。

如需故障排除,请致电 {{ post.get_field('custom_field_name')|print_r }} 获取您可以检索的数据列表。

现在我可以用{{ post.get_field('custom_field_name').post_title }}抓取我想要的数据了。