// AJAX handler for getting products - نسخه کاملاً بازنویسی شده public function ajax_get_products() { check_ajax_referer('supplier_ajax_nonce', 'nonce'); if (!is_user_logged_in()) { wp_send_json_error('لطفاً وارد شوید'); return; } $page = isset($_POST['page']) ? intval($_POST['page']) : 1; $search = isset($_POST['search']) ? sanitize_text_field($_POST['search']) : ''; $brand = isset($_POST['brand']) ? sanitize_text_field($_POST['brand']) : ''; $per_page = 24; $args = array( 'post_type' => 'product', 'post_status' => 'publish', 'posts_per_page' => $per_page, 'paged' => $page, ); if (!empty($search)) { $args['s'] = $search; } if (!empty($brand)) { $args['tax_query'] = array( array( 'taxonomy' => 'pwb-brand', 'field' => 'slug', 'terms' => $brand ) ); } $products_query = new WP_Query($args); $products = array(); if ($products_query->have_posts()) { while ($products_query->have_posts()) { $products_query->the_post(); $post_id = get_the_ID(); $product = wc_get_product($post_id); if (!$product) continue; // **روش کاملاً جدید برای دریافت تصویر** $image_url = ''; // روش 1:直接从پست دریافت کن if (has_post_thumbnail($post_id)) { $image_url = get_the_post_thumbnail_url($post_id, 'medium'); } // روش 2: از خود محصول بگیر if (!$image_url) { $image_id = get_post_thumbnail_id($post_id); if ($image_id) { $image_url = wp_get_attachment_image_url($image_id, 'medium'); } } // روش 3: از متادیتای محصول بگیر if (!$image_url) { $image_id = $product->get_image_id(); if ($image_id) { $image_url = wp_get_attachment_image_url($image_id, 'medium'); } } // روش 4: از گالری محصول بگیر (اولین تصویر) if (!$image_url) { $gallery_ids = $product->get_gallery_image_ids(); if (!empty($gallery_ids)) { $image_url = wp_get_attachment_image_url($gallery_ids[0], 'medium'); } } // روش 5: از والد محصول (برای variations) if (!$image_url && $product->is_type('variation')) { $parent_id = $product->get_parent_id(); if (has_post_thumbnail($parent_id)) { $image_url = get_the_post_thumbnail_url($parent_id, 'medium'); } } // اگر هنوز تصویری نداریم، از placeholder استفاده کن if (!$image_url) { $image_url = wc_placeholder_img_src(); } // دریافت اطلاعات برند $brand_name = ''; $product_id_for_brand = $product->is_type('variation') ? $product->get_parent_id() : $post_id; $brand_terms = get_the_terms($product_id_for_brand, 'pwb-brand'); if ($brand_terms && !is_wp_error($brand_terms)) { $brand_name = $brand_terms[0]->name; } // دریافت قیمت‌های فعلی $current_price = $product->get_regular_price(); $current_sale_price = $product->get_sale_price(); $products[] = array( 'id' => $post_id, 'name' => $product->get_name(), 'sku' => $product->get_sku() ?: 'بدون شناسه', 'image' => $image_url, 'brand' => $brand_name, 'current_price' => $current_price ? floatval($current_price) : 0, 'current_sale_price' => $current_sale_price ? floatval($current_sale_price) : null, 'type' => $product->get_type() ); } } wp_reset_postdata(); $total_products = $products_query->found_posts; $total_pages = $products_query->max_num_pages; wp_send_json_success(array( 'products' => $products, 'total_products' => $total_products, 'total_pages' => $total_pages )); }