警告:在更新到PHP 7.2后使用未定义的常量_ -假定为'_'(这将在PHP的未来版本中抛出错误)

watbbzwu  于 2023-03-07  发布在  PHP
关注(0)|答案(3)|浏览(212)

我已经检查了其他相关的职位,但不幸的是,它没有帮助我的问题。
我越来越
警告:使用未定义的常量_-假定为'_'(这将在PHP的未来版本中抛出错误)
更新到PHP版本7.2后出错
我追溯到这个代码片段的原因:

<span class="post-container__excerpt-price"><?php echo '$' . number_format( (float)get_field('price', $post->ID) );  ?></span>

当我删除这个错误消失,但我似乎找不到任何突出的问题,这个代码要么。'price', $post->ID是指一个自定义字段,是用ACF创建的。
有人知道吗?多谢!
整个代码块如下所示:

// create shortcode to list all listings
add_shortcode( 'list-posts-basic', 'rmcc_post_listing_shortcode1' );
function rmcc_post_listing_shortcode1( $atts ) {
    ob_start();
    $query = new WP_Query( array(
        'post_type' => 'listings',
        'posts_per_page' => -1,
        'order' => 'DESC',
        'orderby' => 'date',
    ) );
    if ( $query->have_posts() ) { ?>
        <div class="posts-container">
            <?php while ( $query->have_posts() ) : $query->the_post(); ?>
            <div class="post-container" id="post-<?php the_ID(); ?>" <?php post_class(); ?>>

                <a class="" href="<?php the_permalink(); ?>"><div class="listing-post-img" style="background: url(<?php echo get_the_post_thumbnail_url() ?> )"></div></a>

                <div class="post-container__content">
                    <a href="<?php the_permalink(); ?>"><h3><?php the_title(); ?></h3></a>
                    <p class="post-container__excerpt">
                        <?php the_excerpt();  ?>
                        <span class="post-container__excerpt-price"><?php echo '$' . number_format( (float)get_field('price', $post->ID) );  ?></span>
                    </p>

                    <a class="post-container__button" href="<?php the_permalink(); ?>">View Details</a>
                </div>
            </div>
            <?php endwhile;
            wp_reset_postdata(); ?>
        </div>
    <?php $myvariable = ob_get_clean();
    return $myvariable;
    }
}
wfveoks0

wfveoks01#

问题是$post-〉ID。此时无法访问全局$post。
您需要添加全局$post;或者可以将get_the_ID()替换为它。
同样,你可以缩短这个。

<?php $myvariable = ob_get_clean();
    return $myvariable;
    }

简短的版本,因为没有理由只声明一个变量就返回。

<?php return ob_get_clean();
}

使用$post-〉ID x1c 0d1x进行测试

xtupzzrd

xtupzzrd2#

您只需插入以下代码:

return ob_get_clean();

如果您的代码是:

.....
...
..

执行:

return ob_get_clean();

对我来说很好。

ekqde3dh

ekqde3dh3#

我想我找到了导致这个错误undefined constant _ - assumed '_'的问题。PHP 7似乎对<?php?>前后的空格非常挑剔。它引用“未定义常量”_的原因是因为字符_可能是一个Unicode字符。在我的例子中,它是Unicode的非中断空格。而且正好在?>之前。
在您的代码中,您说它在这一行中-请注意?>前面的两个空格:

<span ...><?php echo ...get_field('price', $post->ID) );  ?></span>

我敢打赌,第二个空格实际上是一个Unicode字符,这就是导致警告的原因。在我的情况下,用一个实际的空格覆盖它解决了这个问题,即使它看起来完全一样。我能够确认我的是一个Unicode字符,通过在十六进制编辑器中打开它,它显示的“空格”为0xC 2A 0,而不是通常的0x 20。我也检查了你的,但我的猜测是,它得到了翻译到一个实际的空间时,粘贴到这个网站。
更多信息:
What is “=C2=A0” in MIME encoded, quoted-printable text?
Warning: Cannot modify header information - headers already sent

相关问题