我试图创建一个回购计算器,当用户正常购买一些东西,当订单完成时,用户可以用SKU进行回购,当回购完成时,会有一定的金额扣除,但剩余的金额将进入钱包.当用户试图购买新产品时,钱包金额应该被扣除,我能够扣除金额,但在数据库中,金额没有被扣除.
// Function to create the buy_back_calculator table
function create_buy_back_calculator_table()
{
global $wpdb;
$charset_collate = $wpdb->get_charset_collate();
$table_name = $wpdb->prefix . 'buy_back_calculator';
$total_wallet_amount = $wpdb->prefix . 'total_wallet_amount';
// SQL statement to create the buy_back_calculator table
$sql = "CREATE TABLE $table_name (
id INT AUTO_INCREMENT PRIMARY KEY,
sku VARCHAR(255) NOT NULL,
user_name VARCHAR(255) NOT NULL,
user_email VARCHAR(255) NOT NULL,
user_billing_address VARCHAR(255) NOT NULL,
user_phone_number VARCHAR(20) NOT NULL,
date_of_product_purchase DATE NOT NULL,
date_of_buyback DATE NOT NULL,
product_price DECIMAL(10, 2) NOT NULL,
number_of_days INT NOT NULL,
buy_back_price DECIMAL(10, 2) NOT NULL,
amount_in_wallet_remaining DECIMAL(10, 2) NOT NULL,
transit_status VARCHAR(255) NOT NULL,
image_path VARCHAR(255) NOT NULL
) $charset_collate;";
// Execute the SQL query to create the buy_back_calculator table
require_once(ABSPATH . 'wp-admin/includes/upgrade.php');
dbDelta($sql);
// SQL statement to create the total_wallet_amount table
$sql = "CREATE TABLE $total_wallet_amount (
id INT AUTO_INCREMENT PRIMARY KEY,
user_email VARCHAR(255) NOT NULL,
total_wallet_amount DECIMAL(19, 4) NOT NULL
) $charset_collate;";
// Execute the SQL query to create the total_wallet_amount table
dbDelta($sql);
}
我try 了下面的功能,但它是从钱包中扣除 checkout 总价,而不是更新数据库中的total_wallet_amount
.
function adjust_order_total_with_deduction()
{
if (is_user_logged_in()) {
global $wpdb;
$current_user = wp_get_current_user();
$user_email = $current_user->user_email;
$total_wallet_amount_table = $wpdb->prefix . 'total_wallet_amount';
$user_remaining_sum = $wpdb->get_var($wpdb->prepare("SELECT total_wallet_amount FROM $total_wallet_amount_table WHERE user_email = %s", $user_email));
$deduction_amount = $user_remaining_sum; // Fixed amount to deduct
if ($deduction_amount > 0) {
WC()->cart->add_fee(__('Deduction Amount', 'your-text-domain'), -$deduction_amount);
}
}
}
add_action('woocommerce_cart_calculate_fees', 'adjust_order_total_with_deduction');