public function enqueue_scripts() { wp_enqueue_script( 'datatables', FASTSHOP_DT_URL . 'vendor/datatables.min.js', ['jquery'], FASTSHOP_DT_VERSION, true ); wp_enqueue_script( 'fastshop-dt', FASTSHOP_DT_URL . 'assets/js/fastshop.js', ['jquery', 'datatables'], FASTSHOP_DT_VERSION, true ); wp_enqueue_style( 'datatables-css', FASTSHOP_DT_URL . 'vendor/datatables.min.css', [], FASTSHOP_DT_VERSION ); wp_enqueue_style( 'fastshop-dt-css', FASTSHOP_DT_URL . 'assets/css/style.css', [], FASTSHOP_DT_VERSION ); // بررسی XStore $is_xstore = (defined('ETHEME_THEME_VERSION') || wp_get_theme()->get_template() === 'xstore'); wp_localize_script( 'fastshop-dt', 'fastshop_vars', [ 'ajax_url' => admin_url( 'admin-ajax.php' ), 'nonce' => wp_create_nonce( 'fastshop_nonce' ), 'datatables_lang_url' => FASTSHOP_DT_URL . 'assets/lang/fa.json', 'is_xstore' => $is_xstore, 'cart_url' => wc_get_cart_url(), 'checkout_url' => wc_get_checkout_url() ]); } // بارگذاری محتویات سبد خرید public function ajax_get_cart_contents() { check_ajax_referer( 'fastshop_nonce', 'nonce' ); if ( ! WC()->cart ) { wp_die(); } $cart_items = []; $cart_total = WC()->cart->get_cart_contents_total() + WC()->cart->get_cart_tax(); foreach ( WC()->cart->get_cart() as $cart_item_key => $cart_item ) { $product = $cart_item['data']; $product_id = $cart_item['product_id']; if ( $product && $product->exists() ) { $cart_items[] = [ 'key' => $cart_item_key, 'product_id' => $product_id, 'name' => $product->get_name(), 'quantity' => $cart_item['quantity'], 'price' => wc_price( $product->get_price() ), 'line_total' => wc_price( $cart_item['line_total'] ), 'image' => wp_get_attachment_image_url( $product->get_image_id(), 'thumbnail' ) ]; } } wp_send_json_success([ 'items' => $cart_items, 'total' => wc_price( $cart_total ), 'count' => WC()->cart->get_cart_contents_count() ]); } // افزودن به سبد خرید public function ajax_add_to_cart() { check_ajax_referer( 'fastshop_nonce', 'nonce' ); $product_id = absint( $_POST['product_id'] ); $quantity = absint( $_POST['quantity'] ); if ( ! $product_id || ! $quantity ) { wp_send_json_error( 'داده‌های نامعتبر' ); } $product = wc_get_product( $product_id ); if ( ! $product || ! $product->is_purchasable() ) { wp_send_json_error( 'محصول قابل خریداری نیست' ); } $passed_validation = apply_filters( 'woocommerce_add_to_cart_validation', true, $product_id, $quantity ); if ( ! $passed_validation ) { wp_send_json_error( 'خطا در اعتبارسنجی' ); } $cart_item_key = WC()->cart->add_to_cart( $product_id, $quantity ); if ( $cart_item_key ) { do_action( 'woocommerce_ajax_added_to_cart', $product_id ); // دریافت fragments برای بروزرسانی WC_AJAX::get_refreshed_fragments(); wp_send_json_success([ 'message' => sprintf( '%s به سبد خرید اضافه شد', $product->get_name() ), 'fragments' => apply_filters( 'woocommerce_add_to_cart_fragments', [] ), 'cart_hash' => WC()->cart->get_cart_hash() ]); } else { wp_send_json_error( 'خطا در افزودن به سبد خرید' ); } } // حذف آیتم از سبد خرید public function ajax_remove_cart_item() { check_ajax_referer( 'fastshop_nonce', 'nonce' ); $cart_key = sanitize_text_field( $_POST['cart_key'] ); if ( ! $cart_key ) { wp_send_json_error( 'کلید سبد خرید نامعتبر' ); } $removed = WC()->cart->remove_cart_item( $cart_key ); if ( $removed ) { WC_AJAX::get_refreshed_fragments(); wp_send_json_success([ 'message' => 'محصول از سبد خرید حذف شد', 'fragments' => apply_filters( 'woocommerce_add_to_cart_fragments', [] ) ]); } else { wp_send_json_error( 'خطا در حذف محصول' ); } } مشاوره رایگان – ایلکوشاپ