WooCommerce 有选择地显示缺货产品

2024-03-26

如何在类别视图中选择性地显示缺货产品?我知道我可以在所有产品的 WooCommerce 选项面板中执行此操作,但我需要更多地控制它。我正在考虑在主题的functions.php中添加一些内容,例如:

add_action( 'xyz', function() {
    global $product;

    if ( !$product->is_in_stock() ) {
        //Need to make it viewable here but selectively, not globally;
    }
});

产品页面上的单个复选框切换将是完美的,例如“即使库存水平为零也显示”。

注意 - 对于超过 500 种产品,我需要为那些我需要可见的少数产品设置一个复选框,而不是相反。

有任何想法吗?


嗯,这比我想象的要棘手得多。该解决方案分为三个部分。

首先,您必须向管理产品元框添加一个复选框。我认为如果我们将其放置在库存状态输入附近会比较合适。

add_action( 'woocommerce_product_options_stock_status', 'so_27971630_hide_if_out_of_stock' );

function so_27971630_hide_if_out_of_stock(){
    woocommerce_wp_checkbox( array( 'id' => '_hide_if_out_of_stock', 'wrapper_class' => 'show_if_simple show_if_variable', 'label' => __( 'Hide this product from archives when out of stock?', 'your-plugin-domain' ) ) );
}

然后我们需要保存这些数据。通常,我会将复选框保存为“是”与“否”,就像 WooCommerce 那样。但是,要使产品查询正确,要求当您想要隐藏该项目时元存在,否则根本不存在......因此 if/elseupdate_post_meta() versus delete_post_meta()

add_action( 'woocommerce_process_product_meta', 'so_27971630_save_product_meta' );

function so_27971630_save_product_meta( $post_id ){
    if( isset( $_POST['_hide_if_out_of_stock'] ) ) {
        update_post_meta( $post_id, '_hide_if_out_of_stock', 'yes' );
    } else {
        delete_post_meta( $post_id, '_hide_if_out_of_stock' );
    }
}

最后,我们需要调整产品查询。 WooCommerce 为其产品构建自定义查询WC_Query班级。基本上我所做的是,如果您没有通过插件选项大规模隐藏所有缺货商品,此代码将修改元查询,以便任何没有元键的商品_hide_if_out_of_stock将显示。这是一种反直觉的说法,即任何选中“缺货时隐藏”框的产品都将被隐藏。

add_action( 'woocommerce_product_query', 'so_27971630_product_query' );

function so_27971630_product_query( $q ){

    $meta_query = $q->get( 'meta_query' );

    if ( get_option( 'woocommerce_hide_out_of_stock_items' ) == 'no' ) {
        $meta_query[] = array(
                    'key'       => '_hide_if_out_of_stock',
                    'compare'   => 'NOT EXISTS'
                );
    }

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

WooCommerce 有选择地显示缺货产品 的相关文章

  • 尝试使用curl进行GET,发送的值允许为空

    我正在尝试使用curl 来执行一个简单的GET 其中包含一个名为redirect uri 的参数 被调用的 php 文件打印出 GET redirect uri 的空字符串 它显示 red 并且似乎没有发送任何内容 执行获取操作的代码 Ge
  • 使用 PHP 将子项添加到 XML 文件

    添加子项时 抛出此错误 无法添加孩子 父级不是 XML 树的永久成员 我无法解决这个问题 这是我的代码 if visited FIRST xml new SimpleXMLElement
  • CodeIgniter:使用多维 POST 数据验证表单

    所以框架是CodeIgniter 2 0 2 我有一个表单 其中包含与数据库中的行相对应的字段组 字段名称的格式为 opt 0 foo opt 0 bar opt 1 foo opt 1 bar etc 索引 1 2等 并不对应于数据库中的
  • 日期函数的奇怪行为

    我今天在 StackOverflow 上遇到了这个问题 但没有得到答案 我的问题是 echo date Y m d strtotime 2012 september 09 output 2012 09 01 echo date Y m d
  • 在 Laravel 视图中使用 CSS?

    我刚刚开始学习 Laravel 并且可以掌握控制器和路由的基础知识 我的操作系统是 Mac OS X Lion 它位于 MAMP 服务器上 我的routes php代码 Route get function return View make
  • 使用 php 变量更改 css 类

    这里需要您的帮助 正如标题所示 我正在尝试使用 PHP 变量更改 css 类 所以基本上我想创建一个回显某些代码的循环 但我希望第一个循环中的 div 类有所不同 它应该被隐藏 这是我为使问题变得清晰而编写的简化代码 我不知道错误在哪里 请
  • PDO 返回不正确但重复的数据。密钥不在数据库中。

    我刚开始使用 pdo 语句 所以可能是一些简单的东西 我还没有在 php net 上读过 查询数据库时我收到重复的结果 Result 0 gt Array umeta id gt 31 0 gt 31 user id gt 2 1 gt 2
  • 此集合实例 Laravel 关系中不存在属性 [X]

    我在 Laravel 5 6 中使用了很多 Realtions 当我添加 phonebooks 时 我看到所有关系都工作正常 一切都很好 但是当我尝试在视图中显示它们时 我得到了属性在此集合上不存在的错误 这是关系代码 public fun
  • mvc 中的模型(最佳实践,PHP)

    我知道有很多关于 MVC 和最佳实践的文章和问题 但我找不到这样的简单示例 假设我必须用 PHP 开发一个 Web 应用程序 我想遵循 MVC 模式 没有框架 该应用程序应该有一个简单的书籍 CRUD 我想从控制器获取我商店中的所有书籍 保
  • 使用计数器作为变量名称的一部分来访问变量

    我尝试做类似的事情 cat1 array hello everyone cat array bye everyone for index 0 index lt 2 index echo cat index 1 当然是行不通的 我需要在这里改
  • 如何使用 PHP 调整缩略图大小时提高图像质量?

    我在网上找到了这个脚本 它可以从图像中创建缩略图 但创建的缩略图质量很差 如何提高图像的质量 有没有更好的方法来创建缩略图 如果有的话 您能给我指点一下如何使用 PHP 创建缩略图的教程吗 这是下面的代码
  • 回显 HTML 并内置 PHP

    请帮助我使用 echo 与 HTML 和 PHP 使用数组范围将其转换为动态
  • 在 PHP $_SESSION 中存储数据不安全吗?

    根据我的理解 PHP 进程的行为并不像应用程序服务器进程 因此 执行脚本后 PHP 进程不会保留任何用户特定数据 相反 它将它们存储在用户的 cookie 中 所以无论我们存储在什么地方 SESSSION进入cookie 这是真的 如果是
  • 如何在 PHP 中修剪定界文档(长字符串)中的每一行

    我正在创建一个 PHP 函数 可以修剪长字符串中的每一行 例如
  • 在 Woocommerce 商店页面中显示可变产品的默认变化价格

    I m wondering how I can display the product price on the shop page Right now my variable products are shown with their p
  • 使用 PHP 比较两个字符串的相似度

    嘿伙计们 我想寻求一些解决方案 现在我有字典了单词 txt 这里有一些例子 happy laugh sad 我有俚语字符串 hppy 我想要搜索和匹配那个俚语字符串我的字典这意味着它将返回 happy 因为这些字符串参考 快乐 in 字典
  • 关闭旧的 php websocket

    我在用PHP Websockets https github com ghedipunk PHP Websockets创建一个简单的聊天服务器 当我第一次运行在我的服务器上创建 websocket 的 php 脚本时 一切正常 如果脚本由于
  • 在 PHP 中设置通知的 FCM 通道 ID

    我正在尝试使用 PHP 向 Android 设备发送 FCM 通知 我的代码适用于 Android O 之前的设备 在Android O中 我们还需要在请求中设置通道ID来接收通知 我不知道该怎么做 我已在应用程序中完成了必要的设置 并使用
  • Mysqli 准备好的语句从数组动态构建 INSERT 查询

    我正在尝试用 PHP 而不是 OOP 开发我的函数 以创建 CRUD 目标是对任何表使用相同的函数 但我已经陷入了第一个表中 不知道该怎么做 我现在拥有的 function to avoid injections function vali
  • html 下钻下拉所选值未插入 MYSQL

    我有两个下拉列表 首先从数据库下拉填充 根据第一个下拉列表的选定值从数据库填充第二个下拉列表 document ready function c change function var c1 c selected text if c1 aj

随机推荐

  • 如何在购物篮中显示正确的税费(结账前)?

    我有一个简单的问题 我为不同国家设置了多种税率 但是 在购物篮页面上 当尚未访问结帐页面时 它会显示来自基准国家 地区的税费 就我而言 我在 AT 有一家商店 我已经为 AT 和 CH 设置了税费 如果用户使用瑞士 IP 进行访问 我会将国
  • 合并多个data.table

    我知道一个人可以合并 加入 两个data table与merge函数或 data table功能 然而 如果我说 10 data table并想要使用do call将它们全部合并在一起 是否有一个函数可以做到这一点 目前我求助于do cal
  • 覆盖 Object.toString 错误

    为什么这会在 Flash Builder 中产生错误 package public class Foo override public function toString String return Foo 制表符补全表明这可用于覆盖 错误
  • Silverlight 4 组合框下拉显示不一致

    我有一个 Silverlight 4 应用程序 在窗体底部附近有一个组合框 下拉列表中可以包含大约 30 到 100 个项目 当我第一次打开 ComboBox 时 没有 SelectedItem Dropdown 向上打开 大约有 23 个
  • GMail 线程、IMAP 和 Ruby

    我正在使用 Ruby IMAP 库来获取 GMail 对话 GMail 线程对话的方式是通过 Message ID 和 In Reply To 消息标头 例如 In Reply To lt email protected cdn cgi l
  • 在网页上包含不引人注目的信息的最佳方式

    所以我写了一些脚本 在我的页面上设置了谷歌地图 这些脚本包含在我的页面 并使用 jQuery 使用从页面上的地址列表生成的标记来构建地图 但是 我有每个地址的一些精确坐标数据 JavaScript 需要这些数据才能正确放置标记 这不是我希望
  • 为什么最终变量必须在构造函数完成之前初始化?

    为什么最终变量必须在构造函数完成之前初始化 public class Ex final int q 当我编译这段代码时 我收到这样的错误 错误 变量 q 可能尚未初始化 The official原因是它是由Java 语言规范 8 3 1 2
  • UIAlertView/UIAlertController iOS 7 和 iOS 8 兼容性

    我正在使用 Swift 编写一个应用程序 我需要显示一个警报 该应用程序必须兼容 iOS 7 和 iOS 8 自从UIAlertView已替换为UIAlertController 我如何检查是否UIAlertController不检查系统版
  • 如何更改 WinApi C++ 中控件的字体?

    如何更改 win32 API 中编辑控件的字体 我希望能够在编辑控件上编辑字体的样式和颜色 首先 您应该澄清您正在谈论的是标准编辑控件与 Rich Edit 控件 两者完全不同 您可以通过发送更改字体WM SETFONT http msdn
  • Socket.io,socket.set() 和套接字属性之间的区别?

    Socket io 建议设置每个套接字变量 如下所示 socket set foo bar function 还可以在套接字上设置和访问变量 socket foo bar 使用提供的 set 函数有好处吗 Calling socket fo
  • 如何在 OSGi 中将 ManagedServiceFactory 正确实现为声明式服务?

    我有需要在每个配置基础上创建的服务 每个服务都依赖于外部资源 因此应该管理它自己的生命周期 即 取消 注册服务 因此 将这些实现为 DS 并让 SCR 生成多个实例是行不通的 人们可以实现一个注册 ManagedServiceFactory
  • HTML 表未出现在 RStudio 查看器中,而仅作为代码出现在控制台中 - 为什么?

    我是在 R 中制作表格和使用 html 的新手 我在两台不同的笔记本电脑上安装了 R 当在其中一台计算机上工作时 当我使用 htmlTable xtable 等时 RStudio 骑行端的查看器中会出现一个表格 但是 在另一台计算机上 查看
  • 在ubuntu上构建php5.3.8,出现错误:configure:error:无法找到gmp.h

    我正在使用 ubuntu 13 10 x64 并且正在尝试构建 php 5 3 8 我下载了源代码并运行配置 configure enable fpm with fpm user www data with fpm group www da
  • RSpec-rails-capybara - 使用 :js => true 和不使用 :js => true 时的不同失败

    我正在构建一个用于个人计费的设置屏幕 控制器 视图位于 Admin 命名空间中 当在没有 js gt true 的情况下运行第一个测试时 我遇到了一个失败 我认为这是由于该链接不能作为使用 js 脚本构建一组嵌套字段的帮助程序 基于 Rai
  • Gradle 失败并显示“方法 java.io.File# 的方法重载不明确”

    When gradle build正在运行我的项目 我收到此错误 失败 构建失败并出现异常 Where 构建文件 App build gradle 行 45 什么地方出了错 评估项目 App 时出现问题 方法的模糊方法重载 java io
  • 创建标记版本时,CircleCI 报告“无工作流程”

    我想构建一个 CircleCI 工作流程 仅当我在 Github 中创建标记版本时才构建并推送到 ECR 我有以下 CircleCI 工作流程 workflows test build and push image jobs get pyt
  • Vue.js 将槽传递给包装的 Bootstrap-Vue Table 组件

    我正在尝试为 bootstrap vue Table 组件创建一个包装器 该组件使用槽来定义单元模板 如下所示
  • BufferedReader 准备方法

    我观察到 java io BufferedReader 的 read 方法有一个奇怪的行为 该方法在 Tomcat 中返回 false 而当在 Jetty 中运行相同的 servlet 时返回 true BufferedReader buf
  • sql作业中的Xml解析问题

    我在 SQL Server 作业中执行查询时遇到错误 但如果我直接执行它 它就可以正常工作 以用户身份执行 NT AUTHORITY SYSTEM XML解析 第10行 第33个字符输入意外结束 SQLSTATE 42000 错误 9400
  • WooCommerce 有选择地显示缺货产品

    如何在类别视图中选择性地显示缺货产品 我知道我可以在所有产品的 WooCommerce 选项面板中执行此操作 但我需要更多地控制它 我正在考虑在主题的functions php中添加一些内容 例如 add action xyz functi