从ACF灵活内容中获取最后一行并将其显示在另一页上

时间:2016-06-09 10:02:57

标签: wordpress advanced-custom-fields

我制作了两个页面,一个首页和一个“基本内容页面” 在这个“基本内容页面”上,我用不同的文字和图像制作了灵活的内容。

我搜索了在首页上显示最后行的方法,是否可以?

更新:这是最后一个代码,它可以使用“post object field”(名为“relation”)从另一个页面获取内容,这要归功于@Nick Surmanidze。只留下如何抓住最后一行的问题。

<?php
$post_object = get_field('relation');

if( $post_object ):
// override $post
$post = $post_object;
setup_postdata( $post );
?>
        <div>
                <?php
// check if the flexible content field has rows of data

if( have_rows('selection') ):
// loop through the rows of data
while ( have_rows('selection') ) :
the_row();

if( get_row_layout() == 'selectionselection' ):
?>
                            <div class="titre-soustitre">
                                <div class="menu-content" data-id="id-<?php  the_sub_field('id'); ?>">
                                    <p class="demo bis"><span class="sub">&nbsp;</span></p>
                                    <a href="#" class="expander"><h1><p class="demo title"><?php  the_sub_field('title'); ?></p></h1></a>              
                                    <p class="demo bis"><span class="sub"><?php  the_sub_field('subhead'); ?></span></p>
                                </div>
                            </div>
                <?php 
endif;
endwhile; else :
// no layouts found
endif;
?>
        </div>
        <?php  wp_reset_postdata();// IMPORTANT - reset the $post object so the rest of the page works correctly  ?>
        <?php  endif; ?>

更新2:为了帮助您理解:这是另一页的行,我通过$ post_object

抓取
                <?php
                // check if the flexible content field has rows of data
                if( have_rows('selection') ):
                // loop through the rows of data
                while ( have_rows('selection') ) : the_row();
                if( get_row_layout() == 'selectionselection' ):?>





                            <div class="titre-soustitre">


                                <div class="menu-content" data-id="id-<?php the_sub_field('id');?>">


                                    <p class="demo bis"><span class="sub">&nbsp;</span></p>
                                    <a href="#" class="expander"><h1><p class="demo title"><?php the_sub_field('title');?></p></h1></a>              
                                    <p class="demo bis"><span class="sub"><?php the_sub_field('subhead');?></span></p>





                                </div>

                            </div>





                <?php endif;
                endwhile;
                else :
                // no layouts found
                endif;

                ?>

1 个答案:

答案 0 :(得分:4)

我认为您需要在主页上添加自定义字段。它可以是“post / page”字段(不记得它是如何调用的)。这个想法是在主页后端指示哪个页面ID将从中获取最后一行转发器或灵活内容字段。

  1. 添加自定义字段以指示主页上的页面ID。

  2. 现在在主页模板上,您需要编写如下内容: $ otherPageId = get_field('your_other_page_id');

  3. 然后你可以在你的代码中运行相同的东西但是进入

    have_rows('selection')

  4. 功能添加第二个参数

     have_rows('selection', $otherPageId)
    

    以指示您要在哪个页面上搜索此字段。

    1. 要获得最后一行,您可以使用多种方式。一种方法是将行内容分配给数组,然后使用数组的最后一项,或者这是另一个片段,可以让您了解如何以ACF方式执行此操作:
    2. $ repeater = get_field('repeater');

      $ last_row = end($ repeater);

      echo $ last_row ['sub_field'];