WooCommerce与Divi主题自定义空购物车页面失效求助
解决WooCommerce+Divi空购物车页面替换问题
你的代码未生效的核心原因是条件判断逻辑错误:原代码只在「非购物车页面」且购物车为空时跳转,但你需要的是用户访问购物车页面且购物车为空时,替换为自定义页面。
修正后的代码
将以下代码替换你原有的代码,放到子主题的functions.php中(不建议直接修改父主题,避免主题更新丢失代码):
function custom_redirect_empty_cart() { // 替换为你的自定义页面ID $empty_cart_page_id = 123; // 条件:当前在购物车页面 + 购物车为空 + 不在结账页面 if ( is_cart() && WC()->cart->is_empty() && !is_checkout() ) { wp_redirect( get_permalink( $empty_cart_page_id ) ); exit; } } add_action( 'template_redirect', 'custom_redirect_empty_cart' );
额外注意事项
- 确认
$empty_cart_page_id是你创建的自定义页面的正确ID(可在页面编辑页的地址栏中查看,比如post=123里的123)。 - 清除WordPress缓存、Divi主题缓存及浏览器缓存,避免旧代码残留导致不生效。
- 若跳转方案仍有问题,可尝试模板重载方案:
- 在你的Divi子主题文件夹中创建
woocommerce/cart目录 - 复制WooCommerce插件目录下的
templates/cart/cart-empty.php文件到上述目录 - 修改复制后的
cart-empty.php内容,直接调用自定义页面内容:<?php // 替换123为你的自定义页面ID $empty_cart_page = get_post(123); echo apply_filters('the_content', $empty_cart_page->post_content); ?>
- 在你的Divi子主题文件夹中创建
内容的提问来源于stack exchange,提问作者Davide Stiglitz
相关产品推荐
相关产品推荐

