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

WordPress如何为WooCommerce指定页面加载资源及正确使用逻辑取反

WooCommerce 页面资源加载优化及反向判断解决方案

一、现有代码优化方案

你当前的代码逻辑方向是对的,但有两处可修正和优化的点:

  • 资源加载函数误用:CSS文件需要用wp_enqueue_style()而非wp_enqueue_script(),后者是专门用于加载JS文件的函数,错误调用可能导致资源识别异常。
  • 逻辑运算符规范:WordPress官方编码规范推荐使用||替代or,避免因运算符优先级问题导致判断逻辑出错。
  • 可扩展优化:可以增加版本号、资源依赖参数,方便后续缓存管理和依赖声明。

优化后的完整代码如下:

function my_enqueue_woocommerce_assets() {
    // 仅在商店页、商品分类页、单品页加载资源
    if ( is_shop() || is_product() || is_product_category() ) {
        wp_enqueue_style( 
            'woocommerce-custom-style', // 资源句柄,注意不要和其他资源重名
            get_stylesheet_directory_uri() . '/assets/css/style.css',
            array(), // 依赖的其他CSS资源句柄,无依赖则留空
            '1.0.0', // 自定义版本号,更新资源时修改版本号可强制刷新浏览器缓存
            'all' // 媒体类型,默认all即可
        );
        // 如果需要加载JS资源,使用下方写法
        /*
        wp_enqueue_script(
            'woocommerce-custom-script',
            get_stylesheet_directory_uri() . '/assets/js/custom.js',
            array('jquery'), // 示例:声明依赖jQuery
            '1.0.0',
            true // 资源加载到页脚,优化页面打开速度
        );
        */
    }
}
add_action( 'wp_enqueue_scripts', 'my_enqueue_woocommerce_assets', 10 );

如果后续需要新增更多页面判断,想要逻辑更简洁,也可以用数组判断的写法:

function my_enqueue_woocommerce_assets() {
    $is_target_page = [
        is_shop(),
        is_product(),
        is_product_category()
    ];
    if ( in_array( true, $is_target_page, true ) ) {
        // 加载资源逻辑
    }
}
add_action( 'wp_enqueue_scripts', 'my_enqueue_woocommerce_assets', 10 );

二、反向判断错误原因及正确写法

你之前的反向判断逻辑错误是因为逻辑运算符用错了,根据布尔逻辑的德摩根定律:
!(A || B || C) 等价于 !A && !B && !C

你原来写的!is_shop() or !is_product() or !is_product_category()逻辑是「不是商店页 或者 不是单品页 或者 不是分类页」,这个条件几乎所有页面都会满足(因为不可能有页面同时是商店、单品、分类三个页面),所以不会生效。

你要实现的「不在这三个页面就返回」的正确写法有两种:
写法1(直接取非判断):

function not_needed() {
    // 只要不是三个页面中的任意一个,就直接返回
    if ( ! is_shop() && ! is_product() && ! is_product_category() ) {
        return;
    }
    // 后续是需要在这三个页面执行的逻辑
}

写法2(更直观的括号包裹写法):

function not_needed() {
    if ( ! ( is_shop() || is_product() || is_product_category() ) ) {
        return;
    }
    // 后续是需要在这三个页面执行的逻辑
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 00:36:06