PHP条件判断内<p>标签未渲染 仅输出价格是何代码错误?
问题根因
这是ACF(Advanced Custom Fields)函数特性理解错误导致的逻辑异常:
the_field($field_key, $post_id)是直接输出函数,执行时会立刻把字段内容打印到页面,不会返回字段值,函数执行完成后的返回结果为null。- 代码运行到
if(the_field('price',$postID))时,PHP会先执行括号内的the_field():第一步就把价格文本直接输出到前端,再将函数返回的null作为if判断的依据,判定条件为假,直接跳过整个if代码块。
你写的<p class="price">标签位于被跳过的代码块中,根本没有被输出到前端,自然不会渲染,页面上仅会保留if判断阶段被提前打印的裸价格文本。
修复代码
判断字段是否存在时,改用取值函数get_field()——该函数会返回字段值、不会直接输出,正好用于条件判断:
<?php if(get_field('price', $postID)) : ?> <p class="price"><?php the_field('price', $postID); ?></p> <?php endif; ?>
如果要减少重复的字段查询,也可以先把字段值存为变量复用,性能更优,同时加上WordPress模板安全转义函数避免特殊字符破坏页面结构:
<?php if($price = get_field('price', $postID)) : ?> <p class="price"><?php echo esc_html($price); ?></p> <?php endif; ?>
内容的提问来源于stack exchange,提问作者marwa
相关产品推荐
相关产品推荐

