php - 使购物车中相同的产品测量选择出现在 WooCommerce 的结帐页面上
问题描述
这段代码增加了产品的尺寸,并且在购物车中一切看起来都很好,但是在支付页面上它过于简化了,我需要它们在支付页面上与它们在购物车中的显示完全相同。
如何在结帐页面上显示结果?
add_filter( 'woocommerce_cart_item_quantity', 'change_cart_item_displayed_quantity', 10, 3 );
function change_cart_item_displayed_quantity( $product_quantity, $cart_item_key, $cart_item ) {
$escribiunidades = 0;
$posareacubierta = strpos($cart_item['data'], "_area");
$areacubierta = substr($cart_item['data'],$posareacubierta);
$areacubierta = str_replace("\"","", $areacubierta);
$areacubierta = str_replace("area","", $areacubierta);
$areacubierta = str_replace("value","", $areacubierta);
$areacubierta = str_replace(",","", $areacubierta);
$areacubierta = str_replace("_","", $areacubierta);
$areacubierta = str_replace(":","", $areacubierta);
$areacubierta = str_replace("]","", $areacubierta);
$areacubierta = str_replace("}","", $areacubierta);
if (is_numeric($areacubierta)) {
$areacubierta = $cart_item['quantity'] * $areacubierta;
$product_quantity = $product_quantity . " <font style='font-size:15px; padding-left: 20px; padding-right: 10px;'>CAJA(S)</font><br><font style='font-size:15px;'>(Total: " . number_format($areacubierta,2) . " m2)</font>";
$escribiunidades = 1;
}
$poswidth = strpos($cart_item['data'], "width");
$posheight = strpos($cart_item['data'], "height");
$areamaterial = substr($cart_item['data'],$poswidth,($posheight-$poswidth));
$areamaterial = str_replace("\"","", $areamaterial);
$areamaterial = str_replace("width","", $areamaterial);
$areamaterial = str_replace("value","", $areamaterial);
$areamaterial = str_replace(",","", $areamaterial);
$areamaterial = str_replace("_","", $areamaterial);
$areamaterial = str_replace(":","", $areamaterial);
$areamaterial = str_replace("]","", $areamaterial);
$areamaterial = str_replace("}","", $areamaterial);
if (is_numeric($areamaterial) && $escribiunidades == 0) {
$areamaterial = $cart_item['quantity'] * $areamaterial;
$product_quantity = $product_quantity . "<font style='font-size:15px; margin-left:-25px; float:center !important;'>METRO(S) LINEAL(ES)</font><br><font style='font-size:15px;'>(Total: " . number_format($areamaterial,2) . " m2)</font>";
$escribiunidades = 1;
}
return $product_quantity;
}
解决方案
- 要回答您的问题,要在结帐页面上显示此问题,您可以使用
woocommerce_checkout_cart_item_quantity
钩子
// Display in checkout
function filter_woocommerce_checkout_cart_item_quantity( $item_qty, $cart_item, $cart_item_key ) {
// Do some magic...
return $item_qty;
}
add_filter( 'woocommerce_checkout_cart_item_quantity', 'filter_woocommerce_checkout_cart_item_quantity', 10, 3 );
- 由于我注意到您在当前代码中使用了许多不同的字符串函数,因此在此答案中,我展示了如何以数值形式获取产品的宽度和高度的简单表示。我相信这也是您原始代码中的意图。通过以不同的方式制定我的答案,我相信您可以以简单的方式重写原始代码
// Display in checkout
function filter_woocommerce_checkout_cart_item_quantity( $item_qty, $cart_item, $cart_item_key ) {
// Get width & height
$poswidth = (int) $cart_item['data']->get_width();
$posheight = (int) $cart_item['data']->get_height();
// Do a certain calculation
$areamaterial = $poswidth * $posheight;
// Condition
if ( is_numeric( $areamaterial ) ) {
$areamaterial = $cart_item['quantity'] * $areamaterial;
// Notice the use of .= opposite =
// This is adding to versus overwriting the original value
$item_qty .= '<span style="display:block">METRO(S) LINEAL(ES) Total: "' . number_format( $areamaterial, 2 ) . '" m2)</span>';
}
return $item_qty;
}
add_filter( 'woocommerce_checkout_cart_item_quantity', 'filter_woocommerce_checkout_cart_item_quantity', 10, 3 );
推荐阅读
- javascript - 使用javascript将值从输入传递到href
- django - 可以使用 snmpreceiver 或 pysnmp 模块为使用 django 的打印机监控系统收集数据吗?
- excel - 如何仅在一段时间内运行 Excel VBA 宏
- firebase - 如何查询包含数组且数组值为 ["val1", "val2"] Firestore 的文档
- postgresql - 使用 gin 索引的 postgresql jsonb 数组查询
- javascript - 寻找存在满足嵌套 JSON 逻辑的最优节点
- c# - 如何从异步方法中获取对象?
- ios - UITableView 在 iOS 11 中删除行
- c++ - 如何更改默认字符串比较?
- linux - 如何在设置文件所有权时修复 Unison 错误