当前位置: 首页 > 知识库问答 >
问题:

如何检查WooCommerce产品类型是否可变?

岳均
2023-03-14

我需要一个代码来检查woocommerce产品类型是否不是“变量”

为了检查某物是否是可变产品,我通常使用这个:

if ($product->is_type('variable') ) {
// do something
}

但我需要检查它是否不是一个变量产品,所以我认为我应该这样做,但这会导致PHP错误。。。

if (! $product->is_type('variable') ) {
// do something
}

编辑:我得到以下错误:"致命错误:未捕获错误:调用成员函数is_type()在空"

我以为我的代码有问题。但后来我在其他模板文件中测试了它,它成功了。我想在functions.php中使用我的php代码,将除变量产品外的所有样式都排出来。像这样:

global $product;    
if (! $product->is_type('variable') ) {
    wp_dequeue_style('sample');
}

所以不能这样做?有什么想法吗?

共有2个答案

酆奇文
2023-03-14

为了避免此错误,您可以尝试以下轻量级方法

if ( is_product() && ! has_term( 'variable', 'product_type', get_the_id() ) ) {
    wp_dequeue_style('sample');
}

或者还有这种更重的方式:

if ( is_product() ) {
    global $product;
    
    if ( ! is_a($product, 'WC_Product') ) {
        $product = wc_get_product( get_the_id() );
    }
    
    if ( is_a($product, 'WC_Product') && ! $product->is_type('variable') ) {
        wp_dequeue_style('sample');
    }
}
洪祺
2023-03-14

您的主题的functions.php文件会为WP站点上的每个页面调用。如果你有一个薄弱的控制功能,你很可能会面临一些致命的错误,整个网站。在您的情况下,您需要做的就是检查$product是否确实是Wc_product的实例或null。

因此,将代码更改为:

global $product;    
if (!empty($product) && is_a($product,Wc_Product::class) && ! $product->is_type('variable') ) {
    wp_dequeue_style('sample');
}

解释是,我们检查$product是否确实有一个值,并且它实际上是一个Wc_产品类实例。如果可以,那么您可以检查$product-

 类似资料:
  • 我是wordpress/woocommerce的新手,刚刚开始创建自定义插件。 到目前为止,我已经通过api添加了自定义的woocommerce设置。 我遇到了一个问题,需要在“产品数据”选项卡中的单个产品上添加自定义字段。 我设法使用以下代码显示它: 但是现在我需要检查产品类型是简单的还是变化的。我尝试了以下方法: 但是,我得到一个错误: 我有一种很好的感觉,我正在尝试在产品类被调用之前启动它。

  • 我试图使用WC_产品类在WooCommerce中创建变量产品。我们成功创建了一个简单的产品,但无法创建具有以下代码的可变产品: 这段代码正在WooCommerce中创建简单的产品。我们需要创建一个具有选项和变化的可变产品。

  • 似乎WooCommerce产品的搜索功能没有检查“产品标签”分类术语,也没有检查SKU字段?我将SKU作为产品标签添加到它们各自的产品中,但当我搜索SKU时,它仍然没有返回任何内容。。。。如何使搜索功能检查产品标签术语?我尝试了很多方法,从添加tax\u查询到pre\u get\u post过滤器,再到一个全新的WP\u查询循环,由于某种原因,它无法搜索产品标签。。。。那么,产品标签的意义是什么呢

  • 问题内容: 我需要检查客户是否在WooCommerce之前购买了特定产品。 情况是这样的:除非他们较早购买了产品“ a”或“ b”,否则客户将不能购买产品“ c”,“ d”,“ e”。 如果客户较早购买了产品“ a”或“ b”,则激活产品“ c”,“ d”和“ e”的购买按钮,并允许他们购买产品。 如果他们之前没有购买过“ a”或“ b”,则将不允许他们购买“ c”,“ d”,“ e”,并且禁用了

  • 问题内容: 我需要检查值是否为整数。我发现了这一点:如何检查输入值是整数还是浮点数?,但如果我没记错的话,即使 值 本身确实是,变量仍然是类型。 问题答案: 如果输入值可以是整数以外的其他数字形式,请按 如果传递字符串值, 请使用,请确保在转换失败的情况下使用try catch进行错误处理。

  • 我读过https://projectlombok.org/features/equalsandHashCode几次,从中得出了不同的结论。 下面是我正在做的一个例子来帮助澄清我的问题: GeneratorTypeB看起来与上面的代码段完全相同。现在说我有以下几点: 我用来组合集合的代码在这个设置中工作得很好,但是我要处理的数据很多,所以遇到equals方法中使用的重复的唯一标识符的几率很低,但是它