Php 在购物车项目库存问题上禁用电子商务下订单结帐按钮

Php 在购物车项目库存问题上禁用电子商务下订单结帐按钮,php,wordpress,woocommerce,cart,stock,Php,Wordpress,Woocommerce,Cart,Stock,此时,如果商品缺货,则结帐页面会显示一条消息: 对不起,我们没有足够的“xxx”库存来满足您的订单(2个可用)。给您带来的不便,我们深表歉意 因此,如果出现该消息,那么我想通过简单地删除它来禁用页面上的“继续签出”按钮 如果没有显示该消息,则显示“继续结帐”按钮 很明显,我将创建一个IF语句,这样,如果它是真的,那么显示IF,not,display等等 这是我的“继续结帐”按钮代码: <input type="submit" name="cart_submit

此时,如果商品缺货,则结帐页面会显示一条消息:

对不起,我们没有足够的“xxx”库存来满足您的订单(2个可用)。给您带来的不便,我们深表歉意

因此,如果出现该消息,那么我想通过简单地删除它来禁用页面上的“继续签出”按钮

如果没有显示该消息,则显示“继续结帐”按钮

很明显,我将创建一个IF语句,这样,如果它是真的,那么显示IF,not,display等等

这是我的“继续结帐”按钮代码:

<input type="submit" name="cart_submit" class="checkout-button button alt wc-forward" style="text-transform: capitalize;" value="<?php esc_html_e( 'Proceed to checkout', 'woocommerce' ); ?>" />


Woocommerce的一个特殊功能是使用全球$product实现产品的价值。
您可以使用以下代码访问产品库存数量

global $product;
$quantity = $product->get_stock_quantity();
if($quantity < 1){
  //take decision. 
}
global$产品;
$quantity=$product->get_stock_quantity();
如果($数量<1){
//做决定。
}
根据显示问题错误代码的,第一个函数将检查购物车项目库存,作为一个条件函数,如果一切正常,则返回true;如果显示错误,则返回false,并提及购物车项目存在库存问题

如果购物车项目存在库存问题,第二个功能将显示一个禁用的灰色“下单”按钮

功能wc\u check\u cart\u item\u stock(){
$product_qty_in_cart=WC()->cart->get_cart_item_quantities();
$current\u session\u order\u id=isset(WC()->session->order\u waiting\u payment)?absint(WC()->session->order\u waiting\u payment):0;
//循环浏览购物车项目
foreach(WC()->cart->get_cart()作为$cart\u item\u key=>$value){
$product=$values['data'];
//根据库存状态检查库存。
如果(!$product->库存中(){
返回false;
}
//我们只需要检查管理库存的产品,库存数量有限。
如果(!$product->管理库存()||$product->允许缺货()){
继续;
}
/基于购物车中的所有物品检查库存,并考虑未决订单中的任何库存。
$HOLDED_stock=wc_get_HOLDED_stock_数量($product,$current_session_order_id);
$required_stock=$product_qty_in_cart[$product->get_stock_managed_by_id()];
如果($product->get_stock_QUOTE()<($HOLDED_stock+$required_stock)){
返回false;
}
}
返回true;
}
添加过滤器(“woocommerce\u order\u button\u html”、“disable\u order\u button\u html”);
函数禁用\u顺序\u按钮\u html($button){
如果(wc\U check\U cart\U item\U stock()){
返回$按钮;
}否则{
返回'

代码放在活动子主题(或活动主题)的function.php文件中。经过测试,效果良好


如果要删除签出“下订单”按钮,请替换:

return '<a class="button alt disabled" style="cursor:not-allowed; text-align:center">' .__('Place order', 'woocommerce') . '</a>';

相关:

谢谢,这非常有帮助。是否可以扫描整个购物车?因此,如果有缺货的商品,请执行xyz?对于获取购物车和购物车商品,您应该遵循此链接作为参考
return '';