从自定义投递类型中的ACF字段中提取图像

时间:2020-04-02 作者:Dan

希望我能很好地解释这一点,但如果没有,请告诉我,我会详细介绍。

我将ACF与自定义帖子类型结合使用,但当我尝试抓取我为每个产品上传的照片时,每次只会显示存档产品上所有产品的第一个产品的照片。php页面。

<?php 
    $args = array( \'post_type\' => \'products\', \'posts_per_page\' => 9 );
    $the_query = new WP_Query( $args );

    $landscape = get_field(\'main_photo_landscape\', $post->ID);
?>

<main class="site-content">
    <div class="row">

        <?php if ( $the_query->have_posts() ) : ?>
            <?php while ( $the_query->have_posts() ) : $the_query->the_post(); ?>

                <article class="col-12 col-md-6 col-lg-4 product">
                    <a href="<?php the_permalink(); ?>" title="<?php the_title_attribute(); ?>">
                        <div class="featured-img" style="background: url(\'<?php echo $landscape[\'sizes\'][\'large\']; ?>\') center center no-repeat; background-size: auto 100%"></div>
                        <h1 class="title"><?php the_title(); ?></h1>
                        <button class="btn">More Details</button>
                    </a>
                </article>

            <?php endwhile; ?>

            <?php the_posts_navigation(); ?>

        <?php endif; ?>

    </div>
</main>

2 个回复
最合适的回答,由SO网友:rudtek 整理而成

您需要定义$landscape 消息灵通的您正在定义,因此它不是重复部分的一部分。

将其向下移动到while 线条看起来像这样:

<?php 
$args = array( \'post_type\' => \'products\', \'posts_per_page\' => 9 );
$the_query = new WP_Query( $args );


?>

<main class="site-content">
<div class="row">

    <?php if ( $the_query->have_posts() ) : ?>
        <?php while ( $the_query->have_posts() ) : $the_query->the_post(); ?>

            $landscape = get_field(\'main_photo_landscape\');

            <article class="col-12 col-md-6 col-lg-4 product">
                <a href="<?php the_permalink(); ?>" title="<?php the_title_attribute(); ?>">
                    <div class="featured-img" style="background: url(\'<?php echo $landscape[\'sizes\'][\'large\']; ?>\') center center no-repeat; background-size: auto 100%"></div>
                    <h1 class="title"><?php the_title(); ?></h1>
                    <button class="btn">More Details</button>
                </a>
            </article>

        <?php endwhile; ?>

        <?php the_posts_navigation(); ?>

    <?php endif; ?>

</div>

通知我已删除, $post->ID

SO网友:WebElaine

这里发生的是你正在设置$landscape 在循环之前,因此只设置一次。(因此它会显示在循环中的每个项目中。)

要解决此问题,请移动第五行-$landscape - 在回路内部。

<?php 
    $args = array( \'post_type\' => \'products\', \'posts_per_page\' => 9 );
    $the_query = new WP_Query( $args );
    // No longer setting $landscape here, which only sets it once.
?>

<main class="site-content">
    <div class="row">

        <?php if ( $the_query->have_posts() ) : ?>
            <?php while ( $the_query->have_posts() ) : $the_query->the_post();
            // Landscape now pulls for the current post.
            $landscape = get_field(\'main_photo_landscape\', $post->ID);
        ?>

                <article class="col-12 col-md-6 col-lg-4 product">
                    <a href="<?php the_permalink(); ?>" title="<?php the_title_attribute(); ?>">
                        <div class="featured-img" style="background: url(\'<?php echo $landscape[\'sizes\'][\'large\']; ?>\') center center no-repeat; background-size: auto 100%"></div>
                        <h1 class="title"><?php the_title(); ?></h1>
                        <button class="btn">More Details</button>
                    </a>
                </article>

            <?php endwhile; ?>

            <?php the_posts_navigation(); ?>

        <?php endif; ?>

    </div>
</main>
这将为每个岗位拉取ACF字段。

相关推荐