我在Wordpress中使用高级自定义字段。 我有一个名为VIDEOS的自定义帖子类型,它有两个字段 - video_link 和 video_artist 。
我可以调用并输出 video_link 字段,但我似乎无法使用以下代码显示' video_artist '字段...
<?php
$posts = get_posts(array(
'post_type' => 'videos',
'posts_per_page' => -1
)
));
if( $posts ): ?>
<?php foreach( $posts as $post ):
setup_postdata( $post )
?>
<?php echo wp_oembed_get( get_field( 'video_link' ) ); ?>
<?php the_title(); ?>
<?php the_field('video_artist'); ?>
</div>
<?php endforeach; ?>
<?php wp_reset_postdata(); ?>
<?php endif; ?>
事实上,这一行......
<?php the_field('video_artist'); ?>
...在网站出现后打破网站并且什么都不显示。没有任何类型的HTML。
答案 0 :(得分:2)
它或多或少与您的代码相同,只是经过测试,并且工作正常
正如@admcfadn所说,你是在wordpress循环中注意的,所以你需要将帖子ID添加为the_field
的参数
$posts = get_posts(array(
'post_type' => 'videos',
'posts_per_page' => -1
));
if( $posts ):
foreach( $posts as $post ):
setup_postdata( $post );
the_title();
the_field('video_link', $post->ID);
the_field('video_artist', $post->ID);
endforeach;
wp_reset_postdata();
endif;
如果你想在the_field
中使用没有arg的循环,那将是这样的:
$options = array(
'post_type' => 'videos',
'posts_per_page' => -1
);
$query = new WP_Query( $options );
if ( $query->have_posts() ) : while ( $query->have_posts() ) : $query->the_post();
the_title();
the_field('video_link');
the_field('video_artist');
endwhile; endif;
ps:您不需要在每一行使用<?php
?>
答案 1 :(得分:0)
$post->the_field('video_artist');
您使用的是get_posts,而不是wp_query,因此您可能需要通过$ post引用变量。
&amp; /或使用以下内容对其进行问题排查:
the_field('video_artist', $post->ID);
可能会得到你。
或......
$baz = get_field( 'video_artist' ); echo $baz;
另外,看起来你在setup_postdata($ post)之后错过了一个分号,并且在get_posts之后有一个额外的右括号