我已经检查了其他相关的职位,但不幸的是,它没有帮助我的问题。
我越来越
警告:使用未定义的常量_-假定为'_'(这将在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;
}
}
3条答案
按热度按时间wfveoks01#
问题是$post-〉ID。此时无法访问全局$post。
您需要添加全局$post;或者可以将get_the_ID()替换为它。
同样,你可以缩短这个。
简短的版本,因为没有理由只声明一个变量就返回。
使用$post-〉ID x1c 0d1x进行测试
xtupzzrd2#
您只需插入以下代码:
如果您的代码是:
执行:
对我来说很好。
ekqde3dh3#
我想我找到了导致这个错误
undefined constant _ - assumed '_'
的问题。PHP 7似乎对<?php
和?>
前后的空格非常挑剔。它引用“未定义常量”_
的原因是因为字符_
可能是一个Unicode字符。在我的例子中,它是Unicode的非中断空格。而且正好在?>
之前。在您的代码中,您说它在这一行中-请注意
?>
前面的两个空格:我敢打赌,第二个空格实际上是一个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