我试图显示用户信息,包括由ACF关系用户字段确定的自定义字段,所有这些字段都包含在灵活的内容字段中。
在回答/注释后编辑更新的代码,但仍然无法输出任何内容-我的所有变量都是空的。
灵活的内容部分很好,我只是将其包含在上下文中。
不过,我在获取相关用户信息方面遇到了困难。
在灵活的内容布局中,我有:
Field Type: 用户
Select multiple values?: 是
Return format: 用户阵列
然后,在我的模板中,我有(大部分HTML已删除):
(role
和author_image
是用户条目中的ACF字段)。
<?php
$posts = get_sub_field(\'who_to_show\');
if( $posts ):
foreach( $posts as $post):
setup_postdata($post);
$user_info = get_userdata($post);
$image = get_field(\'author_image\', \'user_\' . $user_info->post_author );
$role = get_field(\'role\', \'user_\' . $user_info->post_author );
?>
<p><?php echo $role; ?></p>
<img src="<?php echo $image[\'url\']; ?>" alt="<?php echo $image[\'alt\']; ?>" />
<?php endforeach;
endif;
wp_reset_postdata(); ?>
我还尝试了:
<?php
$posts = get_sub_field(\'who_to_show\');
if( $posts ):
foreach( $posts as $post):
setup_postdata($post);
$image = get_field(\'author_image\');
$role = get_field(\'role\');
?>
<p><?php echo $role; ?></p>
<img src="<?php echo $image[\'url\']; ?>" alt="<?php echo $image[\'alt\']; ?>" />
<?php endforeach;
endif;
wp_reset_postdata(); ?>
我的变量仍然是空的。
值得注意的是,图像字段返回值在ACF中设置为“image Array”。
任何指向正确方向的指示都值得赞赏。
最合适的回答,由SO网友:user2265915 整理而成
该解决方案与Lewis的答案仅略有不同:
<?php
$posts = get_sub_field(\'who_to_show\');
if( $posts ):
foreach( $posts as $post):
$userdata = get_user_by(\'ID\',$post[\'ID\']);
$image = get_field(\'author_image\', \'user_\'. $post[\'ID\'] );
$role = get_field(\'role\', \'user_\'. $post[\'ID\'] );
echo $userdata->first_name;
echo $role;
endforeach;
endif;
wp_reset_postdata(); ?>
SO网友:Lewis Donovan
你其实不需要打电话get_userdata()
, 您需要的所有数据都应位于关系字段数组中:
EDIT: 将post ID和用户ID添加到呼叫get_field()
.
<?php
$posts = get_sub_field(\'who_to_show\');
if( $posts ): ?>
<?php foreach( $posts as $post):
setup_postdata($post);
$user_info = get_field( \'relational_user_field\', $post->ID );
$image = get_the_field(\'author_image\', \'user_\'.$user_info->ID );
$role = get_the_field(\'role\', \'user_\'.$user_info->ID );
?>
<h3><?php echo $user_info->user_nicename; ?></h3>
<img src="<?php echo $image[\'url\']; ?>" alt="<?php echo $image[\'alt\']; ?>" />
<?php endforeach;
endif;
wp_reset_postdata();
endif; ?>
显然是交换
\'relational_user_field\'
用于实际字段名。用户数组中返回的数据与中的返回值相同
the_author_meta
SO网友:honk31
你写的get_the_field
, 而获取acf数据的正确功能是get_field
或the_field
如果你想立即回应这些东西。。我想,这打破了你的模板。
不确定,如果我没弄错,但是如果你添加了字段author_image
对于用户来说,下面的答案将帮助您实现目标。如果不是,那么我的答案就是废话:)
从用户处获取acf数据的正确方法如下:
get_field(\'author_image\', \'user_\' . $user_info->post_author );
当你打电话的时候
get_field(\'parameter\')
它将从当前帖子返回数据,类似于
get_field(\'parameter\', get_the_ID())
, 因此,如果您将第二个参数更改为您拥有的任何ID,您可以从该特定ID获得它。。如果
user
是的
user_(USER_ID)