Wordpress高级自定义字段显示字段在循环中不起作用


Wordpress Advanced Custom Fields display field not working in loop

我在Wordpress中使用高级自定义字段。我有一个名为VIDEOS的自定义帖子类型,它有两个字段-video_linkvideo_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

它或多或少与您的代码相同,只是经过测试,并且工作良好

正如@admcfadn所说,你的are注释在wordpress循环中,所以你需要添加post 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 ?>

$post->the_field('video_artist');

您使用的是getposts,而不是wpquery,因此您可能需要通过$post引用这些变量。

&或使用以下方法进行故障排除:

the_field('video_artist', $post->ID); 

也许能帮你搞定。

或者。。。

$baz = get_field( 'video_artist' ); echo $baz;

此外,看起来您在setup_postdata($post)后面缺少了一个分号,在get_posts 后面有一个额外的右括号