wordpress - 如何以编程方式修改 Woocommerce 的购物车的自定义值?
问题描述
我需要使用 Ajax 修改 Woocommerce 的购物车的自定义值。我正在尝试这样的事情:
<?php
add_action( 'wp_ajax_dgd_update_cart', 'dgd_update_cart_callback' );
add_action( 'wp_ajax_nopriv_dgd_update_cart', 'dgd_update_cart_callback' );
function dgd_update_cart_callback() {
global $woocommerce;
$cart = $woocommerce->cart->get_cart();
$woocommerce->cart->cart_contents[ '972cb30dd16a544ec9d5142963a81681' ][ 'thwepo_options' ][ 'delivery_or_collect' ][ 'value' ] = 'collect';
// alternative 2:
// WC()->cart->cart_contents[ '972cb30dd16a544ec9d5142963a81681' ][ 'thwepo_options' ][ 'delivery_or_collect' ][ 'value' ] = 'collect';
die();
}
我需要修改thwepo_options
plugin 引入的值WooCommerce Extra Product Options
。
当然我不会在生产中使用硬编码的 ID,这只是为了测试。
解决方案
我终于能够找到解决方案。这是对我有用的代码:
add_action( 'wp_ajax_dgd_update_cart', 'dgd_update_cart_callback' );
add_action( 'wp_ajax_nopriv_dgd_update_cart', 'dgd_update_cart_callback' );
function dgd_update_cart_callback() {
$cart = WC()->session->get( 'cart' );
foreach ($cart as $key => $value) {
$cart[ $key ][ 'thwepo_options' ][ 'delivery_or_collect' ][ 'value' ] = $_POST[ 'delivery_or_collect' ];
}
WC()->session->set( 'cart', $cart);
die();
}
推荐阅读
- python - Python 运行 Linux 命令,然后将终端留给用户
- django - 在 Django 中将 DetailView 转换为 APIView
- c - 我如何制作一个循环,其中每次处理循环时都可以制作新变量
- python - 在python上实现的Sniffer什么都抓不到?
- regex - 简化正则表达式以捕获重复的子组
- python - 从 zip 的 SpooledTemporaryFile 获取信息
- scala - 在scala中检索属性值
- react-native - 搜索结果 Web 结果命令失败:gradlew.bat installDebug
- python - Python:双端队列超出索引,为什么?
- python-3.x - 我如何将函数中的参数提及到 af 字符串中?