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

时间:2015-09-17 22:19:52

标签: php wordpress twig advanced-custom-fields

我有一个自定义的帖子类型,事件,它有一个SELECT字段,用于抓取另一个自定义帖子类型列表的帖子对象。我们有一个活动,我们想要选择一个附加到它的商家信息,这样我们就可以显示商家的联系信息(电话,地址等)。

的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中,相同的代码就不起作用了。它只显示循环中的最后一个帖子信息。

归档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对象。

1 个答案:

答案 0 :(得分:1)

所以我的问题实际上只是与WP Post Objects合作以及如何获取它的信息。对于任何有问题的人:

使用{{ post.get_field('custom_field_name') }}访问对象信息,而不是{{ post.custom_field_name }}{{ post.get_field('custom_field_name')|print_r }}仅向我提供对象的ID。

要进行故障排除,请致电 {{ post.get_field('custom_field_name').post_title }}表示您可以检索的数据列表。

现在,我可以使用let asset = AVURLAsset(URL: url) let playerItem = AVPlayerItem(asset: asset!) let player = AVPlayer(playerItem: playerItem!) .... override func observeValueForKeyPath(keyPath: String?, ofObject object: AnyObject?, change: [String : AnyObject]?, context: UnsafeMutablePointer<Void>) { if object as? AVPlayerItem == player?.currentItem { if keyPath == "status" { guard let status = player?.currentItem?.status else { return } delegate?.videoViewController(self, statusDidChange: status) } } } 抓取我想要的数据。