You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使WooCommerce指定过滤/函数仅在结账页面生效不影响首页缩略图

修复方案:仅在WooCommerce结账页调整购物车商品缩略图尺寸

错误原因

你之前的代码全局生效、is_page判断失效主要有两个原因:

  • WooCommerce结账页有官方专属条件判断函数is_checkout(),比手动用is_page填页面ID/别名的兼容性更强,不会因为后台修改结账页别名/ID导致判断失效
  • 你之前大概率是直接在根目录挂载过滤器,此时页面条件还未完成初始化,is_page判断无法正常返回正确结果,导致规则全局生效

修复代码

首先删除你之前添加的全局缩略图修改代码,将以下代码添加到子主题的functions.php文件中即可:

// 仅在结账页调整购物车商品缩略图尺寸
add_action( 'template_redirect', 'custom_adjust_checkout_cart_image_size' );
function custom_adjust_checkout_cart_image_size() {
    // 非结账页直接退出,不挂载后续过滤器
    if ( ! is_checkout() ) {
        return;
    }

    add_filter( 'woocommerce_cart_item_thumbnail', 'custom_checkout_cart_item_image', 10, 3 );
    function custom_checkout_cart_item_image( $product_image, $cart_item, $cart_item_key ) {
        $product = $cart_item['data'];
        // 按需修改数组参数:宽、高、是否强制裁剪
        $custom_size = array( 100, 100, true );
        return $product->get_image( $custom_size );
    }
}

注意事项

  • 代码中的array(100, 100, true)为自定义尺寸参数,你可以替换为自己需要的数值,第三个参数为true代表强制裁剪为对应宽高,为false则按比例缩放不裁剪
  • 如果你需要调用已经注册的图片尺寸别名,也可以把$custom_size的值替换为别名,比如'thumbnail'、'medium'等
  • 修改完成后需要清空站点缓存、浏览器缓存后再测试,避免缓存导致效果不生效

内容的提问来源于stack exchange,提问作者Ashish Agarwal

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 21:18:04