Wordpress 高级自定义字段在一个模板中显示来自两种不同 post 类型的两个字段
Wordpress Advanced Custom Fields display two fields from two different post types in one template
我有两种 post 类型。我需要在同一个循环中显示每个内容。目前我可以调用'releases'post类型来显示内容,但是我还需要调用'artists'post类型来显示一些内容DIV.
下面的行以“可捕获的致命错误:class WP_Post 的对象无法转换为字符串错误”中断了页面。
<?php the_field('release_artist_name'); ?>
如何让 release_artist_name 字段停止破坏网站?它是一个通过 Post 对象的字段(post 类型被命名为“艺术家”)。任何帮助表示赞赏。
<?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 )
如果您有 artists
的 post 类型并且您正在使用 ACF,则在您的 releases
post 类型中您应该添加一个名为 release_artist
(例如)类型 Post Object,您将在其中关联艺术家(或艺术家)以进行发布。我建议您将此字段设置为 return Post ID 而不是 Post Object.
然后在您的循环中,您将获得艺术家 ID:
$artist_id = get_field('release_artist');
所以你可以用这个ID查询艺术家的任意自定义字段:
$artist_name = get_field('artist_name', $artist_id);
请注意,所有 ACF 函数都接受带有 post ID 的第二个参数来查询其他 posts,例如,当您在循环中时。
请参阅 get_field 文档。希望这会有所帮助。
我有两种 post 类型。我需要在同一个循环中显示每个内容。目前我可以调用'releases'post类型来显示内容,但是我还需要调用'artists'post类型来显示一些内容DIV.
下面的行以“可捕获的致命错误:class WP_Post 的对象无法转换为字符串错误”中断了页面。
<?php the_field('release_artist_name'); ?>
如何让 release_artist_name 字段停止破坏网站?它是一个通过 Post 对象的字段(post 类型被命名为“艺术家”)。任何帮助表示赞赏。
<?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 )
如果您有 artists
的 post 类型并且您正在使用 ACF,则在您的 releases
post 类型中您应该添加一个名为 release_artist
(例如)类型 Post Object,您将在其中关联艺术家(或艺术家)以进行发布。我建议您将此字段设置为 return Post ID 而不是 Post Object.
然后在您的循环中,您将获得艺术家 ID:
$artist_id = get_field('release_artist');
所以你可以用这个ID查询艺术家的任意自定义字段:
$artist_name = get_field('artist_name', $artist_id);
请注意,所有 ACF 函数都接受带有 post ID 的第二个参数来查询其他 posts,例如,当您在循环中时。
请参阅 get_field 文档。希望这会有所帮助。