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

时间:2016-04-19 19:33:54

标签: php wordpress advanced-custom-fields

我在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。

2 个答案:

答案 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之后有一个额外的右括号