我无法使用高级自定义字段WordPress插件从转发器获取图像

时间:2016-05-18 10:08:37

标签: php wordpress image advanced-custom-fields

我附上了我的转发器和图片Advance Custom Fields的截图。

Image returning a url in a repeater

我上传了转发图片块的三张图片。

现在,我能够获得这些船但却无法在屏幕上看到它。我打开了我的检查元素,我看到while循环执行并显示所有三个船只代码。

我的代码:

        <?php 
/* 
Template Name: boatProduct 
*/ ?>

<?php get_header(); ?>

            <?php if( have_rows('boat_product_slider') ): while ( have_rows('boat_product_slider') ) : the_row(); ?>
            <div class="product_boat" style="background: url('<?php the_sub_field('slider_image'); ?>'); background-size: cover;">

            </div>
            <?php endwhile; endif; ?>

        </div>

        <div id="charter" class="brokerage" style="background: linear-gradient(rgba(255,255,255,0.95), rgba(255,255,255,0.95)), url('<?php the_field('agys_icon'); ?>') no-repeat center 48%; background-size: 80%;  background-attachment: fixed;">


        <h3 style="margin-top:40px;">Specification</h3>
        <p align="justify"><?php the_field('content'); ?></p>
    </div>

<?php get_footer(); ?>

1 个答案:

答案 0 :(得分:1)

您需要对代码进行细微更改,将the_sub_field()替换为get_sub_field()

来自get_sub_field()文档:

  

此函数将返回来自转发器字段或灵活内容字段循环的子字段值。此函数在have_rows()循环中使用。

the_sub_field()功能将打印结果。这不适合您,因为您已将slider_image设置为返回“图像对象”。

来自文档:

  

此函数将显示转发器字段或灵活内容字段循环中的子字段值。此函数在have_rows()循环中使用。

     

此功能与echo get_sub_field('name');相同。

编辑:“循环”

如何处理WordPress循环有两个选项:

选项1

需要在WordPress loop内使用ACF功能。例如(使用默认的TwentySixteen WordPress主题中的page.php

<?php
// Start the loop.
while ( have_posts() ) : the_post();


    // ACF functions should be added here, inside "the Loop"


    // Include the page content template.
    get_template_part( 'template-parts/content', 'page' );

    // If comments are open or we have at least one comment, load up the comment template.
    if ( comments_open() || get_comments_number() ) {
        comments_template();
    }

    // End of the loop.
endwhile;
?>

选项2

或者,您可以将$post_id参数添加到have_rows(),以指定ACF字段应来自哪个帖子/页面:

  

$post_id:输入您的值的特定帖子ID。默认为当前帖子ID(不是必需的)。这也可以是选项/分类/用户/等

$post_id = 123; // This should be the ID of the post/page that contain the ACF fields
if( have_rows('boat_product_slider', $post_id) ):

    // loop through the rows of data
    while ( have_rows('boat_product_slider', $post_id) ) : the_row();
        // ...