我在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
它或多或少与您的代码相同,只是经过测试,并且工作良好
正如@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 后面有一个额外的右括号