Wordpress高级自定义字段在一个模板中显示两个不同帖子类型的两个字段

时间:2016-03-31 04:51:39

标签: php wordpress custom-post-type advanced-custom-fields

我有两种帖子类型。我需要在同一个循环中显示每个内容。目前,我可以致电发布'帖子类型显示内容,但我也需要打电话给艺术家'发布类型以在同一个DIV中显示某些内容。

以下行以“可捕获的致命错误打破页面:类WP_Post的对象无法转换为字符串错误”。

<?php the_field('release_artist_name'); ?>

如何获取release_artist_name字段以停止破坏网站?它是一个通过Post Object的字段(post类型被命名为'artists')。任何帮助表示赞赏。

    <?php 
       $posts = get_posts(array(
        'post_type'     => 'releases'
    )
       ));

       if( $posts ): ?>
    <?php foreach( $posts as $post ): 
       setup_postdata( $post )       
       ?>
<div>
    <?php the_title(); ?> // THIS COMES FROM RELEASES POST TYPE
    <?php the_field('release_artist_name'); ?> // THIS SHOULD COME FROM ARTISTS POST TYPE BUT BREAKS THE PAGE
</div>

    <?php endif; ?>
    <?php endforeach; ?>
    <?php wp_reset_postdata(); ?>
    <?php endif; ?>

如下所述,来自print_r的结果($ posts)......

Array ( [0] => WP_Post Object ( [ID] => 10661 [post_author] => 1 [post_date] => 2016-03-31 02:37:57 [post_date_gmt] => 2016-03-31 02:37:57 [post_content] => [post_title] => New Gold Mountain [post_excerpt] => [post_status] => publish [comment_status] => closed [ping_status] => closed [post_password] => [post_name] => new-gold-mountain [to_ping] => [pinged] => [post_modified] => 2016-03-31 04:41:04 [post_modified_gmt] => 2016-03-31 04:41:04 [post_content_filtered] => [post_parent] => 0 [guid] => http://127.0.0.1:4001/wordpress/?post_type=releases&p=10661 [menu_order] => 0 [post_type] => releases [post_mime_type] => [comment_count] => 0 [filter] => raw )

1 个答案:

答案 0 :(得分:2)

如果您有artists的帖子类型并且您使用的是ACF,则在releases帖子类型中,您应该添加名为release_artist的自定义字段(例如){ {3}}您可以将艺术家(或艺术家)与版本相关联。我建议您将此字段设置为返回帖子ID 而不是帖子对象

然后在你的循环中,你会得到艺术家ID:

$artist_id = get_field('release_artist');

因此,您可以使用此ID查询艺术家的任何自定义字段:

$artist_name = get_field('artist_name', $artist_id);

请注意,所有ACF函数都接受第二个带有帖子ID的参数来查询其他帖子,例如,当你在循环中时。

请参阅Post Object文档。希望这会有所帮助。