向 Woocommerce 3.0 添加股票期权

2023-12-22

我正在尝试将自定义 stock_status 添加到 WordPress 中的 woocommerce 3.0 中。

最终目标是在产品编辑页面上添加第三个库存选项“暂停”,并在产品页面上显示该库存状态。

以前我可以使用这里的方法:在 woocommerce 中添加股票期权 https://stackoverflow.com/questions/26912556/add-stock-option-in-woocommerce,它确实可以向产品管理添加额外的库存选项,但看起来 Woocommerce 3.0 有一些东西覆盖了我在实际产品页面上的设置。它也在产品页面上运行,直到我升级到 3.0。

我的functions.php:

function add_custom_stock_type() {
?>
<script type="text/javascript">
jQuery(function(){
    jQuery('._stock_status_field').not('.custom-stock-status').remove();
});
</script>
<?php   

woocommerce_wp_select( array( 'id' => '_stock_status', 'wrapper_class' => 'hide_if_variable custom-stock-status', 'label' => __( 'Stock status', 'woocommerce' ), 'options' => array(
    'instock' => __( 'In stock', 'woocommerce' ),
    'outofstock' => __( 'Out of stock', 'woocommerce' ),
    'onhold' => __( 'On Hold', 'woocommerce' ), // The new option !!!
), 'desc_tip' => true, 'description' => __( 'Controls whether or not the product is listed as "in stock" or "out of stock" on the frontend.', 'woocommerce' ) ) );}
add_action('woocommerce_product_options_stock_status', 'add_custom_stock_type');

function save_custom_stock_status( $product_id ) {
update_post_meta( $product_id, '_stock_status', wc_clean( $_POST['_stock_status'] ) );
}
add_action('woocommerce_process_product_meta', 'save_custom_stock_status',99,1);

function woocommerce_get_custom_availability( $data, $product ) {
switch( $product->get_stock_status ) {
    case 'onhold':
        $data = array( 'availability' => __( 'On Hold', 'woocommerce' ), 'class' => 'on-hold' );
    break;
    case 'instock':
        $data = array( 'availability' => __( 'In stock', 'woocommerce' ), 'class' => 'in-stock' );
    break;
    case 'outofstock':
        $data = array( 'availability' => __( 'Out of stock', 'woocommerce' ), 'class' => 'out-of-stock' );
    break;
}
return $data;
}
add_action('woocommerce_get_availability', 'woocommerce_get_custom_availability', 3, 2);

https://pastebin.com/EFtBVY9h https://pastebin.com/EFtBVY9h

当我在管理员上选择它时,我可以在数据库中看到 stock_status 已正确设置为“暂停”(我的自定义状态),但这并未应用于实际产品页面。

为了验证,我修改了price.php以简单地输出库存状态:

<p class="price">

<?php 
    $stockamount = $product->get_stock_quantity();
    $price = $product->get_price_html();
    $stockstatus = $product->get_stock_status();
    $pricelabelone = "Out of Stock";
    $pricelabeltwo = "On Hold";

     echo $stockstatus;            
?>
</p>

但是,即使我将产品设置为“暂停”(这是保存),产品页面始终输出“有库存”(测试产品:http://aegis-staging.byethost7.com/dgh/product/santa-cruz-h13-custom-42-cocobolo-and-moon-spruce/ http://aegis-staging.byethost7.com/dgh/product/santa-cruz-h13-custom-42-cocobolo-and-moon-spruce/).

我缺少什么?


该解决方案可能会帮助您解决您的问题。使用“获取帖子元()”而不是使用获取库存状态()获取库存状态。

穿过“woocommerce_get_availability”钩子代码如下面的代码

function woocommerce_get_custom_availability( $data, $product ) {
$stock_status = get_post_meta($product->id , '_stock_status' , true );
switch( $stock_status  ) {
    case 'onhold':
        $data = array( 'availability' => __( 'On Hold', 'woocommerce' ), 'class' => 'on-hold' );
    break;
    case 'instock':
        $data = array( 'availability' => __( 'In stock', 'woocommerce' ), 'class' => 'in-stock' );
    break;
    case 'outofstock':
        $data = array( 'availability' => __( 'Out of stock', 'woocommerce' ), 'class' => 'out-of-stock' );
    break;
}
return $data;
}
add_action('woocommerce_get_availability', 'woocommerce_get_custom_availability', 3, 2);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

向 Woocommerce 3.0 添加股票期权 的相关文章

  • 在同一服务器上的 2 个子域中安装 2 个 WordPress 时共享用户

    我有 2 个 WordPress 网站 位于 2 个不同的子域中 例如test1 abc com and test2 abc com 这两个网站都激活了 wp require 插件 只有登录用户才能看到该网站 我们想要创建一个系统 如果用户
  • IMAP 和 PHP - 从已发送文件夹和收件箱文件夹中获取所有电子邮件

    我正在尝试获取接收和发送的所有电子邮件 并使用 PHP 将其写入 mySQL 数据库 我使用的主机名是 hostname imap gmail com 993 imap ssl INBOX 它仅引用收件箱 并成功抓取收到的电子邮件 为了抓取
  • snappy wkhtmltopdf 包装器将生成的 html 文件发送到浏览器

    我像鼹鼠一样用谷歌搜索 但找不到正确的方法 我正在使用 WKHTMLTOPDF Wrapper Snappy 创建 PDF 如何将使用generateFromHtml方法生成的pdf直接发送到浏览器 这就是我想做的 header Conte
  • Apache LOG:子进程 pid xxxx 退出信号分段错误 (11)

    Apache PHP Mysql Linux 注意 子进程 pid 23145 退出信号分段错误 11 tmp 中可能存在 coredump 但 tmp下没有找到任何东西 我怎样才能找到错误 PHP 代码中函数的无限循环导致了此错误
  • php / phpDoc - @return $this 类的实例?

    如何在 phpDoc 中将方法标记为 返回当前类的实例 在下面的示例中 我的 IDE Netbeans 将看到 setSomething 始终返回foo object 但如果我扩展对象 情况就不是这样了 它会返回 this 在第二个示例中是
  • PHP 可以解压缩使用 .NET GZipStream 类压缩的文件吗?

    我有一个 C 应用程序 它与基于 PHP 的 SOAP Web 服务进行通信以进行更新和许可 我现在正在开发一个反馈系统 供用户通过软件自动提交错误和跟踪日志 根据我之前发布的问题 我认为 Web 服务将是实现此目的的最佳方法 最有可能以最
  • 通过 PDO 将双精度数插入 MySQL 时精度损失

    我遇到了这种非常烦人的行为 我想知道我是否做错了什么 或者这是否是故意的 如果是的话 为什么 每当我在 php 5 3 中有一个 double 类型的变量 并且想将其插入到数据库 MYSQL 5 0 的 double 类型字段中时 该值总是
  • 如何处理PDO异常[重复]

    这个问题在这里已经有答案了 我正在尝试与PDOphp 上的类 但我在找到处理错误的正确方法时遇到了一些麻烦 我编写了以下代码
  • Symfony/Doctrine 重新排列数据库列

    当我使用doctrine schema update命令行生成表时 Doctrine 或Symfony 似乎想要添加一个命令来重新排列我的列 将键放在它出现的前面 我想知道是否 更希望在哪里 我可以禁用环境的这个 功能 所以当我去生成我的表
  • PHP:解析器 asp 页面 [关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 早上好 我可以用 php 解析一个
  • WordPress 子主题 -functions.php 复制 - 无法“重新声明”

    我正在使用带有儿童主题 starkers child 的 Starkers 我需要编辑functions php来声明一个菜单 所以我复制了functions php JS文件夹和external文件夹 它们都在functions文件中的某
  • Symfony/Form:函数 DoctrineType::__construct() 的参数太少

    我有一个奇怪的错误 我在自己的系统中实现了 Form 组件 我在那里创建了一个 FormType 其中使用 EntityType 作为字段 每次我想用 formBuilder 创建表单时 它都会抛出以下错误 Fatal error Unca
  • PHP cURL 看不到 /etc/hosts 文件

    我在让 PHP cURL 库识别我在我的文件中创建的别名时遇到了麻烦 etc hosts file 这就是我的 etc hosts现在归档 192 168 0 20 www example dev 在另一端 192 168 0 20 Apa
  • ElasticSearch 和 PHP 中的多个字段搜索

    我正在使用最新版本弹性搜索 PHP https github com elasticsearch elasticsearch php以及最新版本的 MongoDB 和 ElasticSearch 我需要对可以包含一个或多个值的多个字段进行搜
  • 致命错误 - 未找到“Mongo”类

    我正在尝试执行此操作 但我收到以下错误 致命错误 在 C wamp www 中找不到类 Mongo Info PHP 5 38 MongoDB mongodb win32 i386 2 0 2 MongoDB PHP 驱动程序 mongo
  • WordPress 子主题包括包含文件

    我在一家WordPress使用 AMPPS 作为本地主机在我的本地计算机上进行设置 使用 Delta 主题 我创建了一个子主题 delta2 child 初始设置效果很好 但是 我需要更改包含文件夹中名为 home slider php 的
  • Symfony VS CakePHP:哪一个最接近 PHP [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 我主要是一名 Rails 开发人员 但有时 我必须使用 PHP 进行编码 因为 stackoverflow com更喜欢可以回答的问题 我想知道
  • 通过 IP 地址限制 Laravel 错误日志

    When debug被设定为true在 Laravel 的app config php有什么方法可以限制结果Whoops包含对某些 IP 地址的堆栈跟踪的错误页面 并且不在该列表中的 IP 显示特定视图 Thanks 没有内置 但是你可能可
  • 如何缩短 PHP if 语句?

    我有一个 if 语句 我需要将单个字符串与许多不同的选项进行比较 我在下面发布的代码非常清楚地表明了我的意思 我知道有两种方法可以做到这一点 但另一种甚至更长 那么 是否有任何函数可以以更短的方式实现类似的功能 我的要求可能看起来很愚蠢 但
  • Yii2:无法将列值更新+1

    创建新记录时 我需要将列值更新 1 public function actionCreate model new CreateBookings if model gt load Yii app gt request gt post Yii

随机推荐

  • 如何分别填充NaT和NaN值

    我的数据框同时包含 NaT 和 NaN 值 Date Time entry Entry Date Time exit Exit 0 2015 11 11 10 52 00 19 9900 2015 11 11 11 30 00 20 350
  • 无法访问 C++ std::set 中对象的非常量成员函数

    留言是我做的一堂课 我在主函数中有一组它们传递给 messageTimeOut 以及其他一些函数 在使用迭代器的 messageTimeOut 中 我循环遍历它们并访问不同的成员函数 但是 我只能访问迭代器指向的 Message 的 con
  • 为什么在方法或函数名称之前和之后使用 const 关键字?

    我的应用程序中有以下代码 为什么我们使用const返回类型和方法名称后面的关键字 const T data const return data const T get data const return data 意味着它将返回一个cons
  • pandas - groupby 多个值?

    我有一个数据框 其中包含按通话日期和持续时间记录的手机分钟使用情况 它看起来像这样 30 行示例 id user id call date duration 0 1000 93 1000 2018 12 27 8 52 1 1000 145
  • 如何保护 firebase Cloud Function HTTP 端点以仅允许经过 Firebase 身份验证的用户?

    借助新的 firebase 云功能 我决定将部分 HTTP 端点移至 firebase 一切都很好 但我有以下问题 我有两个由 HTTP 触发器 云函数 构建的端点 用于创建用户并返回自定义令牌的 API 端点 由 Firebase Adm
  • 删除一组具有特定值的变量中的随机观察子集

    假设我有一个数据框 我想在其中删除满足特定标准的随机观察样本 即整行 以此数据框为例 id var1 var2 AAAA 1 Car BBBB 2 Truck CCCC 1 Boat DDDD 2 Car EEEE 1 Truck FFFF
  • 为传单设置 SRID - Geodjango

    我的 Postgres 数据库中有 31277 投影的数据 无论如何 我正在使用 Leaflet 地图来向他们展示 Geodjango 现在 我的数据已移动到地图中的某个位置 因此我需要更改 Leaflet 地图的投影 在文档中 http
  • Heroku 计费测功机到底如何工作?

    我试图了解 Heroku 定价系统 好的 免费帐户每小时可获得 1000 dyno dyno hour 的确切含义是什么 这取决于什么 每秒请求数 用户数量 如果我想切换到非睡眠优惠 我必须为每个 dyno 支付 7 美元 那么 1000
  • 友元函数未在此范围内声明错误

    您好 我试图了解友元函数的范围 但出现 未在范围内声明 错误 这是我的代码 node h class Node public int id int a int b friend int add int int void itsMyLife
  • 在 Python 3 中使用 xlsxwriter 交替行颜色

    有人在Python3中使用xlsxwriter生成excel时实现了交替行颜色吗 data format workbook add format bg color FFC7CE worksheet write data row data c
  • vim 系统寄存器 * 和 + 不起作用

    echo has clipboard 返回 1 但每当我执行 yy or yy 那些寄存器中似乎什么也没有 如果我使用常规yy复制另一行文本 然后尝试使用从寄存器粘贴CONTROL V什么都没发生 如果我尝试 pvim 粘贴我使用常规复制的
  • Linux 的 Windows Beep() 等效项

    我正在Windows上试验Beep功能 include
  • Laravel 创建方法

    我正在尝试使用 Laravel 存储数组create method input Input all new media this gt media gt create input or input Input all new media M
  • 为输入字段注册自定义焦点事件处理程序的最佳实践

    遗憾的是 我没有找到任何焦点事件sap m Input or sap m TextArea我可以在 XML 视图中注册处理程序 您的最佳实践是什么 例如如果你有近 100 个字段并且其中大部分应该处理focus 事件 以便自动选择输入字段中
  • 转换为具有指定小数位数的小数

    有没有办法将一个数字转换为具有指定小数位数的小数 我试过 SELECT CAST NumericField AS NUMERIC 15 DecimalPlaces AS NumericField 但这没有用 EDIT 我写错了NUMBER代
  • Chrome 开发者工具 - (索引)样式表在哪里?

    我正在修改一个基于 WordPress 的网站的主题 新主题再具体一点 虽然我改变了主题选项 style css文件和custom css文件 我无法更改链接的颜色 然后我使用 Chrome 的开发者工具来检查我的规则在哪里被覆盖 最重要的
  • 如何在Web Core API中调试启动?

    我有一个使用 Web Core API 的 MVC 网站 在进行了微小的更改和部署后 我意外地收到了错误 响应状态代码不表示成功 500 内部服务器错误 所以我启用了 Web Core API 的日志文件 请参阅https learn mi
  • ASP.NET MVC 应用程序中的数据操作和业务逻辑代码应该放在哪里?

    观看了 Rob Conery 的 Kona 应用程序的示例后 我发现他在 IoC 中使用了两个东西 ISession 其中有数据层代码和服务 其中有一些我们在操作数据存储中的数据时需要执行的附加业务逻辑 例如 我们可能不仅向数据库添加一条记
  • PHP 中的简单 BBparser 可让您替换标签之外的内容

    我正在尝试解析表示源代码的字符串 如下所示 code lang html lt div gt stuff lt div gt code div stuff div 正如你从我之前的 20 个问题中看到的 我尝试使用 PHP 的正则表达式函数
  • 向 Woocommerce 3.0 添加股票期权

    我正在尝试将自定义 stock status 添加到 WordPress 中的 woocommerce 3 0 中 最终目标是在产品编辑页面上添加第三个库存选项 暂停 并在产品页面上显示该库存状态 以前我可以使用这里的方法 在 woocom