首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >ACF字段组关系-如何输出特定的关系值

ACF字段组关系-如何输出特定的关系值
EN

Stack Overflow用户
提问于 2022-06-23 18:36:49
回答 1查看 327关注 0票数 1

我有3种定制的帖子类型:

Group

  • Service

  • 团队成员
  • 团队

在ACF中,每个CPT都有自己的实地小组如下:

(related_team_member)

  • Team (related_team_group)

  • Service (related_service)

团队成员

所有这些字段都是通过ACF中的关系连接起来的,因此结构如下

无名氏( John -> )摄影->定位芽,工作室嫩芽,修整

无名氏( John -> )录像机,->基础拍摄,无人机射击,后期制作

因此,为了解释这一点,小组的一名成员属于摄影和录像两组,他为每组提供6项服务,3项不同的服务。

现在,我有几页要输出团队成员的数据。

single-team-members.php

我在这里输出单个团队成员的数据,所以在John的Doe卡上,我有他的照片,名字,他所属的组(摄影,录像)和他提供的所有服务,这就完成了。下面的循环稍微简化了一点:

代码语言:javascript
运行
复制
while(have_posts()) {
    the_post(); ?>
                <h2><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></h2>
                <h3 class="member-group"><?php
                    $relatedGroups = get_field('related_group');
                        if ($relatedGroups) {
                            echo '<ul class="member-group__list">';
                            foreach($relatedGroups as $group) { ?>
                            <li><a href="<?php echo get_the_permalink($group); ?>"><?php echo get_the_title($group); ?></a><span class="member-group__divider">,&nbsp</span></li>
                        <?php
                            } echo '</ul>';
                        }?>
                </h3>
                <p><?php the_content(); ?></p>

                <?php
                    $relatedServices = get_field('related_service');
                        if ($relatedServices) {
                            echo '<ul>';
                        foreach($relatedServices as $service) { ?>
                        <li><a href="<?php echo get_the_permalink($service); ?>"><?php echo get_the_title($service); ?></a></li>
                    <?php }
                        echo '</ul>';
                    }?>
     <?php }

page-all-team.php

这里我有所有的团队成员卡片,每一张卡片都输出了他们所属的图片、名字和组,在这里我输出了他们所属的所有组,所以对于John来说是“摄影,录像”

代码语言:javascript
运行
复制
$relatedTeamMembers = new WP_Query(array(
    'posts_per_page' => -1,
    'post_type' => 'team-member',
    'orderby' => 'title',
    'order' => 'ASC',
    'meta_query' => array(
    array(
        'key' => 'related_team_group',
        'compare' => 'LIKE',
        'value' => array()
    )
    )
));

if ($relatedTeamMembers->have_posts()) {
        while($relatedTeamMembers->have_posts()) {
            $relatedTeamMembers->the_post(); ?>
                <a href="<?php the_permalink(); ?>"><div class="team-member">
                    <div class="team-member__label-gold">
                        <div class="team-member__label-gold__name"><?php the_title(); ?></div>
                        <div class="team-member__label-gold__service">
                            <?php
                            $groups = get_field('related_team_group');
                                foreach($groups as $group){
                                echo $group->post_title;
                                }?>
                        </div>
                    </div>
                </div></a>
        <?php }
}

page-photography.php

在这一页上,我想输出:

无名氏在摄影组中提供的

  • 服务:位置芽,工作室芽,修饰

  • 只有一个组名=摄影

page-videography.php

在这一页上,我想输出:

无名氏在视频组提供的Postproduction

  • 服务:基础拍摄,无人机射击,

  • 只有一个组名=视频

page-aerial-shooting.php

在这一页上,我想输出:

只有一个约翰的团体= Videography

  • Only他提供的两项服务=无人机射击,Postproduction
EN

回答 1

Stack Overflow用户

发布于 2022-06-23 22:38:40

当使用ACF的"post对象“字段时,如果使用get_field函数,就会得到post对象。

您可以将get_field函数与post的ID一起使用,以获得这个特定帖子的字段(以ID为目标)。因此,如果您想输出一个名为"myfield“的字段,可以使用在"post object”字段中获得的in。

请注意使用正确的foreach循环,使用services作为service (单)。

代码语言:javascript
运行
复制
$services = get_field('related_service');
foreach($services as $service):
    $myfield = get_field('myfield', $service->ID); // using id of single post object
    echo $myfield;
endforeach;
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72735096

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档