简体   繁体   English

在转发器字段中发布对象(WordPress ACF)

[英]Post Objects within repeater field (WordPress ACF)

I'm working with ACF in WordPress . 我正在WordPress中使用ACF

I have a custom post type called Projects . 我有一个名为Projects的自定义帖子类型。 Within there the user has the option to upload 2 featured images through an ACF repeater field. 在其中,用户可以选择通过ACF转发器字段上载2张特色图片。

Now, on the home page I've given the user the option to select 8 Post Object's from the Projects post type . 现在,在主页上,我为用户提供了从Projects帖子类型中选择8个Post Object的选项。

I need to be able to loop through this home page repeater field, and pull out both featured images and the project title from each 'project' post object . 我需要能够遍历此首页转发器字段,并从每个“项目”发布对象中 提取特色图像项目标题

ACF has recently depreciated the repeater_field function which I think it throwing me off here. ACF最近贬低了repeater_field函数,我认为这使我不满意。

But, here's what I've been trying to work with so far: 但是,到目前为止,这是我一直在尝试的工作:

<!-- check for repeater field -->
<?php if(get_field('featured-projects')): ?>

    <?php while(has_sub_field('featured-projects')): ?>

        <!-- get project post objects -->
        <?php $projects = get_sub_field('project'); ?>

        <!-- without the loop below, this echo's all 8 projects ID's -->
        <?php echo($projects->ID); ?><br />

        <!-- when added, only pulls the first project. And limits the echo above to the first ID -->
        <?php $loop = new WP_Query( array( 
            'post_type' => 'projects',
            'p' => $projects->ID
        ) ); ?>

        <?php while ( $loop->have_posts() ) : $loop->the_post(); ?>

            <a href="<?php the_permalink(); ?>"><?php the_title(); ?></a>


        <?php endwhile; ?>


    <?php endwhile; ?>

<?php endif; ?>

I've tried to comment the code, but if anything does't make sense, let me know. 我试图注释代码,但是如果没有任何意义,请告诉我。

Here is how i'd do it, though I realize its a departure from your method. 尽管我意识到它与您的方法有所不同,但这是我会做的。 I've included explanation in the code comments: 我已经在代码注释中包含了解释:

<?php $featured_projects = get_field('featured-projects'); //Set $featured_projects to equal the array of projects from the home page repeater. ?>

<!-- check for repeater field -->
<?php if($featured_projects): ?>

      <?php foreach($featured_projects as $featured_project) : //Loop through each featured project ?>

          <?php  $project_id = $featured_project['project']->ID; //Get the id for the current featured project ?>

          <?php $project_title = get_the_title($project_id); //set $title to be the title of the project ?> 
          <?php project_featured_images = get_field('name-of-featured-repeater-field-here', $project_id); //get the repeater field of the featured images from the project post ?>



          <h1 class='title'><?php echo $project_title; //print the title ?></h1>

          <?php if($project_featured_images[0]): //check if you have a 1st image (size large) ?> 
              <img class='featured-image-one' src="<?php echo $project_featured_images[0]['name-of-the-featured-image-sub-field-here']['sizes']['large']; //print the url to the 1st image; ?>"/>
          <?php endif; ?>

          <?php if($project_featured_images[1]): //check if you have a 2nd image ?> 
              <img class='featured-image-two' src="<?php echo $project_featured_images[1]['name-of-the-featured-image-sub-field-here']['sizes']['large']; //print the url to the 2nd image (size large); ?>"/>
          <?php endif; ?>

      <?php endforeach; ?>

<?php endif; ?>

Make sure to fill in the name of your project featured image repeater field, and the name of the image subfield within that repeater. 确保填写项目特色图像转发器字段的名称,以及该转发器中图像子字段的名称。 This is clearly a more standard PHP based solution than the API version. 显然,这是比API版本更标准的基于PHP的解决方案。 I typically use this method per Elliot Candon's (ACF Developer) recommendation. 我通常根据Elliot Candon(ACF开发人员)的建议使用此方法。

You can also get different image sizes of the featured images by changing the 'large' to another standard size, or by adding a custom size . 您也可以通过将“大”更改为其他标准尺寸或添加自定义尺寸来获得特色图像的不同图像尺寸。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM