如何基于数据库数据可用性控制商品页视频及360°全景照按钮显示
实现方案
核心逻辑为提前读取对应资源的自定义字段值,做非空有效性校验后,再决定是否渲染对应按钮,原有按钮的功能、样式不会受到任何影响。
具体修改逻辑
- 先将视频、360°全景照的链接分别读取为变量,避免重复调用
get_post_meta方法 - 分别对两个链接变量做非空校验,仅当变量存储了有效链接时才输出对应的按钮代码
- 使用
empty()函数做校验,可同时过滤空字符串、null、全空格等无效值,覆盖所有无有效资源的场景
修改后的完整代码
<div class="visual-content-buttons"> <?php // 获取视频资源链接,判断是否存在有效内容 $video_link = get_post_meta($product->id, 'video', true); if (!empty($video_link)) : ?> <a class="image-button" href="<?php echo esc_url($video_link); ?>" data-featherlight="iframe"> <img src="https://leckys.com.au/wp-content/uploads/2021/09/360-green-2.png" alt="360 Photo">视频 </a> <?php endif; ?> <?php // 获取360°全景照资源链接,判断是否存在有效内容 $panorama_link = get_post_meta($product->id, '360_photo', true); if (!empty($panorama_link)) : ?> <a class="image-button" href="<?php echo esc_url($panorama_link); ?>" data-featherlight="iframe"> <img src="https://leckys.com.au/wp-content/uploads/2021/09/360-green-2.png" alt="360 Photo">360°全景照 </a> <?php endif; ?> </div>
代码中额外增加了
esc_url()方法对输出的链接做转义处理,符合WordPress开发规范,可避免XSS安全风险,不需要的话可以直接删除该方法,不会影响核心显示逻辑。
内容的提问来源于stack exchange,提问作者Jordan h
相关产品推荐
相关产品推荐

