محاسبه قیمت پست ووکامرس

سلام
من میخواستم تو ووکامرس برای محاسبه قیمت پست مثلا اگر یک سفارش ۳ قلم توش هست اینطوری حساب کنه که:
یک قیمت ثابت مثلا ۲۰هزارتومن + به ازای هر محصول در سبد خرید ۷هزار تومن ولی ۲ تا حساب کنه. یعنی:
۲۰+۱۴ بشه ۳۴۰۰۰ تومن
میشه اینطوری؟ افزونه باید استفاده کرد شما میشناسین؟ من کمی برنامه نویسی هم بلدم
بخدا پدرمون درومد ازین قیمت پست هرطور حساب میکنیم بازم نمیشه

سلام

میتونید از افزونه WooCommerce Advanced Shipping استفاده کنید تمام مواردی که گفتید رو داره.

کد نویسی این مورد که گفتید کمی پیچیدگی داره، ولی یه چیزی اینطوری میشه:


<?php
/*
Plugin Name: محاسبه هزینه پستی
Description: یک پلاگین ساده برای محاسبه هزینه پستی با توجه به تعداد محصولات در سبد خرید.
Version: 1.0
Author: نام نویسنده
*/

// افزودن فیلد تنظیمات به تنظیمات حمل و نقل ووکامرس
function custom_shipping_method_init() {
    if ( ! class_exists( 'WC_Shipping_Method' ) ) return;
    
    class WC_Custom_Shipping_Method extends WC_Shipping_Method {
        public function __construct() {
            $this->id                 = 'custom_shipping_method';
            $this->method_title       = 'محاسبه هزینه پستی';
            $this->method_description = 'محاسبه هزینه پستی با توجه به تعداد محصولات در سبد خرید';
            
            $this->init_form_fields();
            $this->init_settings();
            
            $this->title    = $this->get_option( 'title' );
            $this->base_cost   = $this->get_option( 'base_cost' );
            $this->per_product_cost = $this->get_option( 'per_product_cost' );
            
            add_action( 'woocommerce_update_options_shipping_' . $this->id, array( $this, 'process_admin_options' ) );
        }

        public function init_form_fields() {
            $this->form_fields = array(
                'title' => array(
                    'title'       => 'عنوان',
                    'type'        => 'text',
                    'description' => 'عنوان روش حمل و نقل',
                    'default'     => 'محاسبه هزینه پستی',
                ),
                'base_cost' => array(
                    'title'       => 'هزینه ثابت',
                    'type'        => 'number',
                    'description' => 'مقدار هزینه ثابت حمل و نقل',
                    'default'     => 5,
                ),
                'per_product_cost' => array(
                    'title'       => 'هزینه برای هر محصول',
                    'type'        => 'number',
                    'description' => 'مقدار هزینه برای هر محصول اضافی',
                    'default'     => 2,
                ),
            );
        }

        public function calculate_shipping( $package = array() ) {
            $cost = $this->base_cost;
            
            // تعداد محصولات در سبد خرید
            $product_count = WC()->cart->get_cart_contents_count();
            
            // محاسبه هزینه برای هر محصول اضافی
            if ( $product_count > 1 ) {
                $cost += ( $product_count - 1 ) * $this->per_product_cost;
            }
            
            $rate = array(
                'id'      => $this->id,
                'label'   => $this->title,
                'cost'    => $cost,
                'taxes'   => false,
                'calc_tax' => 'per_order'
            );
            
            $this->add_rate( $rate );
        }
    }
}

add_action( 'woocommerce_shipping_init', 'custom_shipping_method_init' );

function add_custom_shipping_method( $methods ) {
    $methods[] = 'WC_Custom_Shipping_Method';
    return $methods;
}

add_filter( 'woocommerce_shipping_methods', 'add_custom_shipping_method' );
?>
1 پسندیده

خدایی دمت گرم. مررررسی

1 پسندیده