如何在单页上重复ACF灵活内容?

时间:2018-03-28 23:15:49

标签: wordpress advanced-custom-fields

免责声明:如果您从未使用过ACF灵活内容来构建网站,请保留仇恨及其所有内容 - 只是寻求帮助。

我创建了一个100%模块化的网站,使用灵活内容完成。

我有以下页面:

Home, About, Services, Blog, Portfolio, Contact

所有使用灵活内容设置样式的页面都是PAGES。

我为服务和投资组合创建了一个自定义字段,我使用WP Query来显示每个单独的项目。这些是CUSTOM字段。如果邮件类型为“服务”,则显示此字段组。不是一个页面。

因此,当您点击它时,您会转到single-[custom-post-type].php,但我只有single.php才能保持动态,这是有效的。

问题在于,当我在服务或项目组合中展示灵活的内容页面模板时,我添加了一些项目,我需要转到每个项目并设置布局。

如何在服务或投资组合自定义字段中保持所有相同的布局?

1 个答案:

答案 0 :(得分:1)

首先创建你的ACF Master块,例如,一个推荐部分,这将在块内有转发器字段等。在这个例子中,我们将其称为Testimonial Master。

然后创建另一个名为Testimonial Block的灵活内容字段,其中包含您选中要显示或隐藏的复选框。

现在,您将在所选父页面或“选项”页面上填充推荐大师。然后,您应该将推荐块添加到您希望该块出现的任何页面。

然后你会检查页面上的推荐栏是否在页面上,如果它在页面上,那么你将检查推荐大师是否有值,如果它有一个值,那么你可以从推荐大师中提取值。

<?php 
    if( have_rows('page_structure') ):
    while ( have_rows('page_structure') ) :
    the_row();
        if( get_row_layout() == 'testimonial_block' ):
         if( get_sub_field('testimonial_block_toggle') == 'show' ):?>
             <div class="testimonials">
                <?php the_sub_field('testimonial_master_title', 1); ?>
             </div>
         <?php endif;
        endif;
    endwhile;
    endif;
?>

&#34; 1&#34;是页面ID,如果您在母版页上填充了该字段,请使用此ID。或者,如果您使用ACF选项页面插件,请更改&#34; 1&#34;到&#34;&#39;选项&#39;&#34;。

以下是有关从其他帖子获取值的更多文档,包括转发器字段的值。

https://www.advancedcustomfields.com/resources/how-to-get-values-from-another-post/

编辑:根据您的示例自定义标题

创建一个自定义头文件并添加该头块的代码。

现在为文本区域创建高级自定义字段。例如header_text_block,将其设置为WYSIWYG编辑器。

现在在您的代码中使用:

<?php the_field('header_text_block');?>

然后,您将在每个页面上使用完全相同的标题,但是它可以让您为每个页面单独编辑文本。

编辑:此代码的示例以及

的示例

另外我觉得你很困惑,只有1个php / html文件?你可以使用page.php。

这是我所说的一个例子,1个php文件:

<?php if( have_rows('page_structure') ):

        while ( have_rows('page_structure') ) : the_row();  

            if( get_row_layout() == 'page_featured' ):
                $image = get_sub_field('page_featured_image');
                    if( !empty($image) ):?>
                        <img src="<?php echo $image['url']; ?>" alt="<?php echo $image['alt']; ?>">
                    <?php endif;
            endif;

            if( get_row_layout() == 'page_breadcrumbs' ):

                if( !in_array( 'hide', get_sub_field('page_breadcrumbs_hide') ) ):?>
                    <?php if ( function_exists('yoast_breadcrumb') ) {yoast_breadcrumb('<p id="breadcrumbs">','</p>');}?>
                <?php else :
                endif;
            endif;
        endwhile;
    endif;
?>

然后在页面编辑器上看起来像这样:

ACF Flexible Content

然后,您可以根据需要编辑每个部分,并将部分拖放到您想要的部分,这样可以轻松进行拆分测试。

所有样式都是相同的,只是你可以更改内容,如果你想要你可以添加更容易改变样式的能力。它只使用1个PHP文件作为模板。