为了账号安全,请及时绑定邮箱和手机立即绑定

ACF if 语句在字段为空时不起作用

ACF if 语句在字段为空时不起作用

PHP
元芳怎么了 2022-08-05 18:59:34
我有一个用于英雄图像的ACF字段,称为。此字段位于我的页面顶部,如下所示:hero_imagesingle.php<?php/** * The template for displaying all single posts * * @link https://developer.wordpress.org/themes/basics/template-hierarchy/#single-post * * @package sitename */get_header();?><?php     $post_id = get_the_ID(); // Required as outside the loop    $image = get_field('hero_image', $post_id);    if ($image) {        echo '<div class="hero">'.wp_get_attachment_image( $image, 'hero').'</div>';    }?><div class="has-sidebar">    <div id="primary" class="content-area">        <main id="main" class="site-main">        <?php        while ( have_posts() ) :            the_post();            get_template_part( 'template-parts/content', get_post_type() );            the_post_navigation();        endwhile; // End of the loop.        ?>        </main><!-- #main -->    </div><!-- #primary -->    <?php        get_sidebar();        get_footer();    ?></div><!-- .has-sidebar -->我使用变量从循环外部获取字段。图像按预期加载。$post_id如果尚未使用该字段为帖子上传图像,我希望前端没有标记。但是,我仍然看到以下内容:<div class="hero"></div>为什么我的 if 语句在字段未使用时不起作用?
查看完整描述

1 回答

?
紫衣仙女

TA贡献1839条经验 获得超15个赞

我做了一些进一步的挖掘,发现了我的问题。


我有两个 ACF 字段和 .这些设置显示在所有页面和帖子上,包括自定义帖子类型。hero_imagethumbnail_image


查看该文件,以下是我的发现:header.php


<?php

    // Get post ID

    $post_id = get_queried_object_id();

    // Hero image

    $hero = get_field('hero_image', $post_id);

    $hero_url = wp_get_attachment_url( get_field('hero_image', $post_id), 'hero');

?>


<?php if ( is_single() || is_archive() ): ?>

    <header id="masthead" class="site-header">

<?php else: ?>

    <header id="masthead" <?php if ($hero) { echo 'class="site-header has-background" style="background:url('.$hero_url.')"'; } else { echo 'class="site-header"'; } ?>>

<?php endif; ?>

如您所见,我还在循环外部使用变量。这阻止了第二个变量通过 工作。$post_id$post_idsingle.php


我已将标题.php重命名为.然后,我通过此变量使用它,因为它也在循环之外。这已经解决了这个问题。$post_id$post_id_outside_loopsingle.php


<?php

/**

 * The template for displaying all single posts

 *

 * @link https://developer.wordpress.org/themes/basics/template-hierarchy/#single-post

 *

 * @package sitename

 */


get_header();

?>


<?php 

    // $post_id_outside_loop is set via header.php

    $image = get_field('hero_image', $post_id_outside_loop);

    if ($image) {

        echo '<div class="hero">'.wp_get_attachment_image( $post_id_outside_loop, 'hero').'</div>';

    }

?>


<div class="has-sidebar">


    <div id="primary" class="content-area">


        <main id="main" class="site-main">


        <?php

        while ( have_posts() ) :

            the_post();


            get_template_part( 'template-parts/content', get_post_type() );


            the_post_navigation();


            // If comments are open or we have at least one comment, load up the comment template.

            if ( comments_open() || get_comments_number() ) :

                comments_template();

            endif;


        endwhile; // End of the loop.

        ?>


        </main><!-- #main -->


    </div><!-- #primary -->


    <?php

        get_sidebar();

        get_footer();

    ?>


</div><!-- .has-sidebar -->


查看完整回答
反对 回复 2022-08-05
  • 1 回答
  • 0 关注
  • 122 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号