WordPress当日营业时间短代码无法运行,求错误排查
你的WordPress短代码问题解析与修复方案
嘿,我来帮你拆解下问题所在,你的短代码有几个关键错误,我一个个给你说明:
错误点梳理
add_shortcode参数缺失:WordPress的add_shortcode()必须传两个参数——第一个是短代码标签名,第二个是对应的回调函数名。你只传了标签,导致短代码根本没绑定到函数上。- 变量定义顺序颠倒:你先尝试输出
$openinghours[$day_today],但这两个变量都还没定义,PHP会直接抛出"变量未定义"的错误,必须先定义数组和当日星期,再调用它们。 - 直接
echo而非return:WordPress短代码的回调函数应该返回内容,而不是直接echo。直接输出会导致内容在页面错误位置加载(比如提前跑到头部),因为WordPress需要捕获返回值再插入到短代码所在的正确位置。 - 变量名大小写不一致:PHP是大小写敏感的,你原代码用的是
$openingHours,但短代码里写成了$openinghours,这会导致PHP找不到数组变量。
修复后的完整代码
function pet_hours() { // 先定义营业时间数组,统一变量名大小写 $openingHours = [ 'Mon' => "Today we're open 8.30am – 6:30pm", 'Tue' => "Today we're open 8.30am – 6:30pm", 'Wed' => "Today we're open 8.30am – 6:30pm", 'Thu' => "Today we're open 8.30am – 6:30pm", 'Fri' => "Today we're open 8.30am - 6:30pm", 'Sat' => "Today we're open 8.30am – 3:00pm", 'Sun' => "Today we're closed" ]; // 获取当日星期标识 $day_today = date('D'); // 返回包裹好的HTML内容,交给WordPress处理输出位置 return '<div class="openingHours">' . $openingHours[$day_today] . '</div>'; } // 正确绑定短代码:标签名 + 回调函数名 add_shortcode('pet_hours', 'pet_hours');
使用说明
把这段代码添加到你主题的functions.php文件里,或者用自定义代码插件(比如Code Snippets)来添加。之后在文章、页面或者小工具里,直接输入[pet_hours]就能调用这个营业时间模块了。
内容的提问来源于stack exchange,提问作者Ben Battaglia
相关产品推荐
相关产品推荐

