在ACF转发器字段内使用post对象

时间:2014-06-23 16:58:44

标签: php wordpress loops custom-fields advanced-custom-fields

我在网站上使用高级自定义字段。

我有一个名为anime_par的转发器字段,sub_field称为animateur。子字段animateur是一个后对象。

我在我的页面循环中使用它,这个循环显示自定义帖子类型中的类别的帖子。

我要做的是在我的页面中显示animateur选择的帖子名称和帖子链接。

以下是我正在使用的代码,但它不起作用,它会显示当前页面的永久链接,而不是自定义字段中选择的代码。

<?php while(has_sub_field('anime_par')): ?>

<a href="<?php echo get_permalink('the_sub_field("animateur")'); ?>"><?php echo get_title('the_sub_field("animateur")'); ?></a>

<?php endwhile; ?>

有任何建议使这项工作?

感谢您的帮助,

3 个答案:

答案 0 :(得分:6)

根据ACF上的转发器和后期对象文档,此方法对我有用。您必须在转发器循环内设置post对象。

我在您的字段名称中添加了一些完全可选的html以显示结构。

希望它有所帮助。

<!-- Start Repeater -->
<?php if( have_rows('anime_par')): // check for repeater fields ?>

<div class="a-container">

    <?php while ( have_rows('anime_par')) : the_row(); // loop through the repeater fields ?>

    <?php // set up post object
        $post_object = get_sub_field('animateur');
        if( $post_object ) :
        $post = $post_object;
        setup_postdata($post);
        ?>

    <article class="your-post"> 

        <?php the_title(); ?>
        <?php the_post_thumbnail(); ?>
        <?php // whatever post stuff you want goes here ?>

    </article>

    <?php wp_reset_postdata(); // IMPORTANT - reset the $post object so the rest of the page works correctly ?>

    <?php endif; ?> 

    <?php endwhile; ?>

</div>
<!-- End Repeater -->
<?php endif; ?>

答案 1 :(得分:0)

没有the_sub_field

has_sub_field无法正常工作 您需要做的是使用has_sub_field循环,如文档http://www.advancedcustomfields.com/resources/functions/the_sub_field/中所述

或者您可以使用get_field('repeater_sluf')之类的

$rows = get_field('repeater_field_name' ); // get all the rows
$first_row = $rows[0]; // get the first row
$first_row_image = $first_row['sub_field_name' ]; // get the sub field value 

答案 2 :(得分:0)

<?php if(get_field('favourite_design_quarters', 'user_'.$current_user->ID)): ?>


<?php while(has_sub_field('favourite_design_quarters', 'user_'.$current_user->ID)): 
$company = get_sub_field('company_name');
$image = wp_get_attachment_image_src( get_post_thumbnail_id( $company->ID ), 'package-thumbnail' ); 
?>
                <tr>
                    <td><img src="<?php echo $image[0]; ?>" alt="<?=$company->post_title;?>" /></td>
                    <td><?=$company->ID;?></td>
                    <td style="text-align:left;"><?=$company->post_content;?></td>
                    <td><?=$company->post_date;?></td>
                    <td><a href="#">Delete</a></td>
                </tr>