【问题标题】:Wordpress ACF relationshipsWordpress ACF 关系
【发布时间】:2013-08-29 19:17:04
【问题描述】:

概述

所以我有两种不同的自定义帖子类型。 乐队视频。添加视频后,您可以选择是否在视频中显示乐队。然后我使用:

<?php if( get_field( "featured_band" ) ): ?>

                    <div class="ox_video">
                        <h3><a href="<?php the_permalink(); ?>"><?php the_field('video_title') ;?></a></h3>
                        <?php 

                        $bands = get_field('featured_band');

                        ?>
                        <?php if( $bands ): ?>
                            <p>Bands in this video: 
                            <?php foreach( $bands as $band ): ?>
                                <span class="vid_meta"><a href="<?php echo get_permalink( $band->ID ); ?>">
                                    <?php echo get_the_title( $band->ID ); ?>
                                </a></span>
                            <?php endforeach; ?>
                            </p>
                        <?php endif; ?>
                        <div class="warrior_vid_item"><?php the_field('video_embed_code') ;?></div>
                        <div class="video_desc"><?php echo custom_field_excerpt(); ?></div>
                    </div>

                <?php else : ?>

                <?php endif; ?> 

这会查看添加了哪个乐队并将它们循环播放并将其作为链接吐出,某人可以单击该链接并将他们带到该乐队页面。完美的。但现在我想转到乐队自定义帖子类型并制作任何带有乐队特色的视频,出现在bands-single.php上

如何使用高级自定义字段插件来做到这一点?

我试过了:

<?php if( get_field( "video_title" ) ): ?>

                    <div class="ox_video">
                        <h3><a href="<?php the_permalink(); ?>"><?php the_field('video_title') ;?></a></h3>
                        <?php 

                        $bands = get_field('video_title');

                        ?>
                        <?php if( $bands ): ?>
                            <p>Bands in this video: 
                            <?php foreach( $bands as $band ): ?>
                                <span class="vid_meta"><a href="<?php echo get_permalink( $band->ID ); ?>">
                                    <?php echo get_the_title( $band->ID ); ?>
                                </a></span>
                            <?php endforeach; ?>
                            </p>
                        <?php endif; ?>
                        <div class="warrior_vid_item"><?php the_field('video_embed_code') ;?></div>
                        <div class="video_desc"><?php echo custom_field_excerpt(); ?></div>
                    </div>

                <?php else : ?>

                <?php endif; ?> 

我无法理解的是,从乐队的角度来看,这种关系是如何运作的。帮助将不胜感激。如果您需要查看更多代码,请告诉我。

【问题讨论】:

  • 你能修复文件的格式吗?缩进真的很疯狂,这使得它有点难以理解。
  • 是的,对不起,我会排序的

标签: php wordpress


【解决方案1】:

如果关系是通过在视频自定义帖子类型中选择相关频段来定义的,那么为了获取特定频段的视频,您需要进行反向查找。据我所知,没有高级自定义字段功能可以为您执行此操作,因此您需要编写自己的查询。像这样的:

$videos = get_posts(array(
  'post_type' => 'video',
  'meta_query' => array(
     array(
       'key' => 'featured_band', 
       'value' => '"' . $post->ID . '"', 
       'compare' => 'like'
     )
   )
));

【讨论】:

    【解决方案2】:

    来自 ACF 网站: http://www.advancedcustomfields.com/resources/relationship/

    “可以对帖子(帖子A)执行反向查询以找到所有选择它(帖子A)的帖子(帖子B,帖子C)。要了解有关反向查询的更多信息,请阅读本深度教程:http://www.advancedcustomfields.com/resources/tutorials/querying-relationship-fields/"

    这两个页​​面非常全面地介绍了双向查询。

    【讨论】:

      猜你喜欢
      • 2020-07-03
      • 1970-01-01
      • 2019-03-13
      • 2017-06-20
      • 2020-10-18
      • 1970-01-01
      • 2015-07-27
      • 2016-12-05
      • 2019-09-26
      相关资源
      最近更新 更多