如何让自定义PHP代码片段在WordPress WooCommerce站点正常生效
问题根因
你用代码片段工具插入时不生效,核心原因是add_action('woocommerce_before_single_product', ...) 这段钩子注册代码执行时机太晚:当你把代码片段插入到页面模板中部时,woocommerce_before_single_product 钩子已经执行完毕,后续再注册这个钩子不会触发对应逻辑,自然看不到按钮输出。
而且你用代码片段插件的核心需求是自定义放置位置,完全不需要依赖原有钩子挂载,直接改代码即可。
解决步骤
- 修改代码片段内容
删除钩子注册行,直接保留按钮输出逻辑即可,修正后的代码如下:
<?php echo '<div class="prev_next_buttons">'; // 仅返回当前分类下的上一个/下一个商品 next_post_link('<p style="float:right;">%link</p>', 'NEXT →', TRUE, ' ', 'product_cat'); previous_post_link('<p style="float:left;">%link</p>', '← PREVIOUS', TRUE,' ', 'product_cat'); // 加清除浮动避免影响后续布局 echo '<div style="clear:both;"></div>'; echo '</div>'; ?>
注意:如果XYZ PHP Code Snippets插件的代码编辑框默认已经自动添加了<?php开头标识,请删除代码里重复的<?php,避免语法错误
2. 配置片段加载规则
在插件的代码片段设置里,指定该片段仅在WooCommerce单品页面加载,避免其他页面出现多余内容或者报错。
3. 插入到目标位置
将代码片段的短码粘贴到你想要显示按钮的单品页面模板对应位置即可,刷新页面清缓存后就能看到按钮。
额外说明
如果操作后还是不显示,先检查是否开启了页面缓存、对象缓存,清空所有缓存后再测试;其次确认你插入短码的位置确实是在单品页面的主循环内部,next_post_link 依赖全局商品对象才能正常获取上下篇商品数据。
内容的提问来源于stack exchange,提问作者Guzzz
相关产品推荐
相关产品推荐

