繁体   English   中英

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

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

我正在WordPress中使用ACF

我有一个名为Projects的自定义帖子类型。 在其中,用户可以选择通过ACF转发器字段上载2张特色图片。

现在,在主页上,我为用户提供了从Projects帖子类型中选择8个Post Object的选项。

我需要能够遍历此首页转发器字段,并从每个“项目”发布对象中 提取特色图像项目标题

ACF最近贬低了repeater_field函数,我认为这使我不满意。

但是,到目前为止,这是我一直在尝试的工作:

<!-- 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; ?>

我试图注释代码,但是如果没有任何意义,请告诉我。

尽管我意识到它与您的方法有所不同,但这是我会做的。 我已经在代码注释中包含了解释:

<?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; ?>

确保填写项目特色图像转发器字段的名称,以及该转发器中图像子字段的名称。 显然,这是比API版本更标准的基于PHP的解决方案。 我通常根据Elliot Candon(ACF开发人员)的建议使用此方法。

您也可以通过将“大”更改为其他标准尺寸或添加自定义尺寸来获得特色图像的不同图像尺寸。

暂无
暂无

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

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