如果在 Woocommerce 中缺货(如果可变产品 - 如果所有变体都缺货),如何隐藏产品? [关闭]

2024-04-18

如果所有变体都缺货,我想隐藏某个产品。

在 WooCommerce 中,如果您单击“隐藏目录中的库存商品”框,它会隐藏缺货的特定变体。当一件衬衫只显示小码和大码时,看起来很奇怪。这不是我想要的。

我想显示所有变体,除非所有变体都缺货 - 那么我想隐藏该产品。


您可以使用woocommerce_product_query如果所有变体都存在,则用于删除产品的操作钩子outofstock。代码将放入您的活动主题functions.php 文件中。

function hide_product_if_all_variation_and_simple_product_is_outofstock( $q ) {

    global $wpdb;

    // Get ids of products which you want to hide
    $array_of_product_id = array();

    // get all variable product Ids
    $variable_products_ids = wc_get_products( array(
        'limit'  => -1,
        'status' => 'publish',
        'type'   => 'variable',
        'return' => 'ids',
    ));

    // Loop through variable products
    foreach( $variable_products_ids as $variable_id ) {
        $count = $wpdb->get_var( $wpdb->prepare( "
            SELECT COUNT(ID)
            FROM {$wpdb->posts} p
            INNER JOIN {$wpdb->postmeta} pm
                ON p.ID           =  pm.post_id
            WHERE p.post_type     =  'product_variation'
                AND p.post_status =  'publish'
                AND p.post_parent =  %d
                AND pm.meta_key   =  '_stock_status'
                AND pm.meta_value != 'outofstock'
        ", $variable_id ) );

        $count = $count > 0 ? true : false;         

        if( !$count ){
            $array_of_product_id[] = $variable_id;
        }
    }

    // get all simple product Ids
    $simple_products_ids = wc_get_products( array(
        'limit'  => -1,
        'status' => 'publish',
        'type'   => 'simple',
        'return' => 'ids',
    ));

    // Loop through variable products
    foreach( $simple_products_ids as $simple_id ) {
        $count = $wpdb->get_var( $wpdb->prepare( "
            SELECT COUNT(ID)
            FROM {$wpdb->posts} p
            INNER JOIN {$wpdb->postmeta} pm
                ON p.ID           =  pm.post_id
            WHERE p.post_type     =  'product'
                AND p.post_status =  'publish'
                AND p.ID =  %d
                AND pm.meta_key   =  '_stock_status'
                AND pm.meta_value != 'outofstock'
        ", $simple_id ) );
        
        $count = $count > 0 ? true : false;         

        if( !$count ){
            $array_of_product_id[] = $simple_id;
        }
    }

    if( !empty( $array_of_product_id ) ){
        $q->set( 'post__not_in', $array_of_product_id );
    }

}
add_action( 'woocommerce_product_query', 'hide_product_if_all_variation_and_simple_product_is_outofstock' );
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如果在 Woocommerce 中缺货(如果可变产品 - 如果所有变体都缺货),如何隐藏产品? [关闭] 的相关文章

  • 如何在不提交 FORM 的情况下获取 VALUE?

    我想在不提交表单的情况下从表单中获取价值 因为客户必须选择正确的房屋模型类型才能获得适合所选房屋模型的正确表单 无需提交 只需选择房屋模型 例如继续之后的其余形式 到目前为止我已经尝试过这个
  • XPath 直到下一个标签

    与之前在这里问过的其他人类似的问题 但由于我不知道如何应用这些建议 所以我需要一些帮助 我想找到一个 html 文档的节点 其结构如下 摘录 可能有所不同 h2 My title 1 h2 h3 Sub heading h3 p span
  • Laravel Schema onDelete 设置为 null

    无法弄清楚如何在 Laravel 中的表上设置正确的 onDelete 约束 我正在使用 SqLite table gt gt onDelete cascade works table gt gt onDelete null set nul
  • 我可以使用开发者密钥通过 Google Sheets API 无需 Oauth 向 Google Sheet 写入数据吗?

    我正在开发一个使用 Google Sheets API 读取和更新 Google 电子表格中的值的应用程序 我可以使用我的开发人员密钥进行读取 但是尝试写入会返回此错误 请求缺少所需的身份验证凭据 需要 OAuth 2 访问令牌 登录 co
  • YOUTUBE API:检索视频关键字

    最近 YouTube 决定仅向经过身份验证的开发者输出视频关键字 我注册了开发者密钥 我试图获取一个我将解析的 XML 通过请求 https gdata youtube com feeds api videos COwIYbYQUrQ ke
  • 如何使PHP库松耦合? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • Flex Slider 无法在手机上运行

    我在这个页面上使用 flexslider 的网站上工作 http www intensetomatoes co nz story timeline http www intensetomatoes co nz story timeline
  • 未找到“Guzzle\Http\Client”类

    我正在尝试在 sitepoint 上跟进本教程http www sitepoint com guzzle php http client http www sitepoint com guzzle php http client 我这里是一
  • 如果 WooCommerce 购物车商品缺货,请勿使用优惠券

    到目前为止 这就是我所得到的 add filter woocommerce coupon is valid coupon always valid 99 2 function coupon always valid valid coupon
  • 解释一下 $CI =& get_instance();

    查看codeigniter的源代码 在它的辅助函数中我不断看到代码 CI get instance 谁能向我解释一下这段代码是如何工作的 我知道它正在返回对 CI 超级对象的引用 但是在哪里get instance 来自 这基本上是一个单例
  • 如何在PHP中使用curl GET发送原始数据?

    我正在开发 REST API 虽然很容易在 cURL 中为 POST 请求设置原始 JSON 数据 payload json encode array user gt data attach encoded JSON string to t
  • 无法加载 php_curl

    我已经在WindowsXp上安装了php5 2 13 apache2 2 15 将C php添加到PATH ssystem变量中 我无法启用卷曲扩展 我配置了extension dir并删除了 在 php ini 中形成 php curl
  • 如何将 PHP 变量获取到 AJAX?

    我认为我没有在单独的 PHP 和 AJAX 文件之间以正确的方式传递变量 我正在通过触发第二个条件来调试它 status info 在我的 PHP 文件中 现在 status出现为 未定义 alert data status 注册进程 ph
  • 获取发送 cURL 请求的用户的 IP 地址

    我想获取使用 php 中的 cURL POST 方法向我的服务器发送请求的用户的 IP 地址 我正在开发一个 Flight API 我将使用 cURL POST 方法获取请求 我必须获取客户端的 IP 地址并验证他的 IP 地址是否可用 如
  • 用于查找 标记之间的所有内容的正则表达式

    我正在尝试找到一种方法来列出之间的所有内容 a and a 标签 所以我有一个链接列表 我想获取链接的名称 不是链接的位置 而是它们在页面上的名称 对我来说真的很有帮助 目前我有这个 lines preg split r n r conte
  • 使用 Composer 安装 PHPUNIT

    我有一个关于 Symfony 2 的项目 我想在 Windows 7 上使用 PHPUNIT On githut phpunit is Composer Simply add a dependency on phpunit phpunit
  • /etc/php5/conf.d 文件夹中的 .ini 文件有什么用?

    我知道 ini 文件位于 etc php5 cli与 PHP 的 CLI 使用有关 文件位于 etc php5 fpm是关于 PHP 的 FastCGI FPM 方面 但是位于以下位置的 ini 文件又如何呢 etc php5 conf d
  • php中有指针吗?

    这段代码是什么意思 这就是你在 php 中声明指针的方式吗 this gt entryId entryId PHP 中的变量名称以 开头 因此 entryId 是变量的名称 this是PHP面向对象编程中的一个特殊变量 它是对当前对象的引用
  • 使用 php 将 HTML 输出转换为纯文本

    我正在尝试将示例 HTML 输出转换为纯文本 但我不知道如何操作 我使用 file get contents 但我尝试转换的页面返回的结果最相似 raw http localhost guestbook profiles php file
  • PHP 命名空间 - 提升一个级别?

    示例1 命名空间 Inori Test 主测试类 示例2 命名空间 Inori Test SubTest SubTest 类扩展了 问题 有没有办法快速提升命名空间的级别 以便 SubTest 可以扩展 MainTest 就像是 MainT

随机推荐

  • 平台调用 F# 回调函数

    我在 Raspberry Pi 2 ARM 7 和单声道 上使用 F 我目前正在尝试使用用 C 编写的 WiringPi 库 我已经成功地使用 P Invoke 来使用一些函数 现在我尝试使用中断 参见http wiringpi com r
  • React.js:如何在单击时附加组件?

    我是 React 新手 我对一些基本的东西感到困惑 我需要在 DOM 渲染后 在单击事件上将组件附加到 DOM 我的初步尝试如下 但没有成功 但这是我想尝试的最好的事情 提前为将 jQuery 与 React 混合而道歉 ParentCom
  • 无法加载配置类

    我正在关注this http www tutorialspoint com spring spring java based configuration htm关于如何使用 Spring 的教程并根据提供的示例 我得到以下异常 Except
  • Yesod持久类型错误

    我正在 Yesod 应用程序中尝试持久化 我的模型文件包含 Job issuer MemberId addDate UTCTime lastDate UTCTime title Text description Text deriving
  • Xcode 5 中单元测试的使用

    我正在编写我的第一个更大的 iOS 项目 我想尽可能多地使用 Xcode 5 现在我想使用测试 但我以前从未这样做过 我的项目使用来Views和动态 TableViews 我怎样才能在代码中实现测试 使其有意义 请先观看 WWDC 13 会
  • 适合约 250,000 张图像的最佳 Web 文件夹结构

    我的网站将包含大约 200 000 张图像 每张图像将被存储 3 次 全尺寸 缩略图 更大缩略图 全尺寸图像约为 50Kb 至 500Kb 普通技术 VPS 上的 Linux Apache MySQL PHP 存储这些内容以便通过浏览器快速
  • 如何监视 JavaScript 中的递归函数

    Note 我已经看到这个问题以不同的方式提出并参考不同的测试工具 我认为清楚地描述问题和解决方案会很有用 我的测试是使用编写的诗乃间谍 https sinonjs org 为了可读性并将使用运行Jest https jestjs io en
  • 如何通过 TIdHTTP 下载大文件?

    我使用此代码下载小文件 Var ms TMemoryStream begin ms TMemoryStream Create Idhttp1 get http mydomain com myfile zip ms ms SaveToFile
  • 无法连接到 VS2012 中的 localDB –“建立与 SQL Server 的连接时发生网络相关或特定于实例的错误...”

    这很奇怪 因为我能够使用相同的连接字符串通过 SSMS 2008R2 连接到 localDB Data Source LocalDB v11 0 Integrated Security true Only C 代码无法连接 我尝试增加登录时
  • 创建流而无需从中创建物理文件

    我需要创建一个包含服务器上存在的文档的 zip 文件 我使用 Net Package 类来执行此操作 并创建一个新的 Package 即 zip 文件 我必须具有物理文件或流的路径 我试图不创建一个实际的 zip 文件 而是创建一个存在于内
  • makemessages 的 Unicode 问题 --all Django 1.6.2 Python 3.3

    升级项目Python 2 7 gt 3 3 1 and 姜戈1 4 gt 1 6 2 更新代码后我们的应用程序再次运行 in py3 翻译正在从 mo files 唯一的问题是我们的旧 po文件不能与 django admin py mak
  • 在 ASP.NET 5 中动态加载程序集

    我曾经有一些代码可以扫描bin我的应用程序的目录中包含尚未加载到 AppDomain 中并加载它们的程序集 它基本上看起来像 foreach var assemblyPath in Directory GetFiles path to bi
  • 根据字符串中多个单词的精确匹配转换新列

    我有一个数据框 df lt data frame Otherspp c suck SD BT SD RS RSS Dominantspp c OM OM RSS CH Commonspp c OM Rarespp c SD NP NP re
  • 什么是 print(f"...")

    我正在阅读一个 python 脚本 该脚本接受 XML 文件的输入并输出 XML 文件 但是 我不明白打印语法 有人可以解释一下吗f in print f does args parser parser args print f Input
  • 如何使用 Ruby CSV 转换器?

    假设您有以下文件 textfield datetimefield numfield foo 2008 07 01 17 50 55 004688 1 bar 2008 07 02 17 50 55 004688 2 读取 csv 的 Rub
  • 如何在 TCPDF 中设置下边距?

    我正在使用 TCPDF 生成 pdf 我可以使用设置左 上 右的边距SetMargins left top right 1 keepmargins false 但无法设置 pdf 页面底部的边距 任何人都可以帮助我在 TCPDF 中设置底部
  • Google Drive api 和服务帐户

    我为我的帐户创建了服务帐户 电子邮件受保护 cdn cgi l email protection 谷歌应用程序 和我的应用程序运行良好 然后我为我的个人帐户创建了服务帐户 电子邮件受保护 cdn cgi l email protection
  • 通过我们的应用程序使用“向朋友和家人汇款”功能

    我们的应用程序需要利用 向朋友和家人汇款 功能 现在我们可以使用 AdaptivePayments 执行个人支付 无需支付任何费用 如预期 但这种类型的交易似乎是购买交易 而不是 向家人和朋友汇款 交易 查看付款详细信息 而不是查看与 向朋
  • 如何用虚拟属性更新模型的属性?

    我有一个名为UserPrice其具有属性 purchase date a date select 在其表中 使用我的表单 我可以一次创建多个 user prices 但为了用户方便 我在我的表单中创建了一个虚拟属性UserPrice模型称为
  • 如果在 Woocommerce 中缺货(如果可变产品 - 如果所有变体都缺货),如何隐藏产品? [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 如果所有变体都缺货 我想隐藏某个产品 在 WooCommerce 中 如果您单击 隐藏目录中的库存商品 框 它会隐藏缺货的特定变体 当