logo
جستجو کردن
جستجو کردن
Close this search box.

حل مشکل آپدیت نشدن لینک دانلود محصولات در ووکامرس برای خریداران قبلی

اگر شما صاحب یک فروشگاه اینترنتی مبتنی بر ووکامرس هستید که انواع محصولات دانلودی را به فروش می رساند، ممکن است با مشکل آپدیت نشدن لینک دانلود برای خریداران قبلی و یا بروزنشدن لینک دادن مواجه شده باشید. به گونه ای که وقتی لینک محصول جدید را درج می کنید، تنها برای مشتریان جدید قابل استفاده است و مشتریان قبلی نمی توانند از محصول بروزشده استفاده کنند. اگر شما هم با این مشکل مواجه هستید نگران نباشید، زیرا ما در این مطلب قصد داریم شما را با آموزش حل مشکل آپدیت نشدن لینک دانلود محصولات در ووکامرس آشنا کنیم. با ما همراه باشید.
حل مشکل آپدیت نشدن لینک دانلود محصولات

اگر شما صاحب یک فروشگاه اینترنتی مبتنی بر ووکامرس هستید که انواع محصولات دانلودی را به فروش می رساند، ممکن است با مشکل آپدیت نشدن لینک دانلود برای خریداران قبلی و یا بروز نشدن لینک دادن مواجه شده باشید. به گونه ای که وقتی لینک محصول جدید را درج می کنید، تنها برای مشتریان جدید قابل استفاده است و مشتریان قبلی نمی توانند از محصول بروز شده استفاده کنند. اگر شما هم با این مشکل مواجه هستید نگران نباشید، زیرا ما در این مطلب قصد داریم شما را با آموزش حل مشکل آپدیت نشدن لینک دانلود محصولات در ووکامرس آشنا کنیم. با ما همراه باشید.

نحوه آپدیت کردن لینک محصولات دانلودی برای خریداران قبلی

نحوه آپدیت کردن لینک محصولات دانلودی برای خریداران قبلی

به طور کلی دو روش کاربردی برای حل مشکل آپدیت نشدن لینک دانلود محصولات ووکامرس برای خریداران قبلی وجود دارد که یکی از آنها استفاده از افزونه و دیگری اضافه کردن یک قطعه کد به فایل قالب می باشد. ما در ادامه مطلب هر دو روش را به شما عزیزان آموزش می دهیم. با آموزش نحوه آپدیت کردن لینک محصولات دانلودی برای خریداران قبلی همراه ما باشید.

1- آموزش بروز رسانی لینک محصولات دانلودی در ووکامرس برای خریداران قبلی با افزونه

یکی از ساده ترین روش ها برای رفع مشکل آپدیت نشدن لینک دانلود محصولات در ووکامرس ، استفاده از افزونه می باشد. پلاگینی که ما قصد داریم در این آموزش به شما عزیزان معرفی کنیم، افزونه ACh Update Woo Download Links می باشد. این افزونه به صورت رایگان در مخزن وردپرس به ثبت رسیده که به سادگی می توانید آن را در سایت خود فعال کنید.

اگر سایت خود را با ووکامرس راه‌اندازی کرده‌اید و می‌ خواهید محصولات دانلودی را با آن بفروشید، با محصولات دانلودی مشکل بزرگی خواهید داشت. مشکل این است که اگر فایل دانلودی محصول ووکامرس را به روز کنید یا یک فایل جدید به لیست فایل ها اضافه کنید، کاربر شما نمی تواند لینک دانلود فایل جدید را ببیند و همچنان لینک های دانلودی را که هنگام خرید دریافت کرده است، مشاهده خواهد کرد. با این افزونه می توانید لینک های دانلود محصولات ووکامرس را برای سفارش های قبلی به روز کنید.

برای انجام اینکار، در ابتدا باید افزونه را در سایت خود نصب و فعال کنید. وارد پیشخوان وردپرس خود شده و سپس از بخش “افزونه ها” روی گزینه “افزودن” کلیک کنید. سپس نام افزونه را در باکس بالای صفحه وارد و سرچ نمائید. پس از اینکه افزونه برای شما نمایان شد کافیست آن را نصب و فعال کنید.

پس از نصب افزونه با پیکربندی تنظیمات آن، می توانید این مشکل را در سایت خود رفع نمائید.

 

2- حل مشکل آپدیت نشدن لینک دانلود محصولات در ووکامرس با کدنویسی

یکی دیگر از بهترین روش ها برای حل مشکل آپدیت نشدن لینک دانلود محصولات ووکامرس برای خریداران قبلی این است که کدهای زیر را به فایل functions.php قالب خود اضافه کنید. شما می توانید این فایل را در روت هاست خود پیدا کنید:

class WooCommerce_Legacy_Grant_Download_Permissions {
	protected static $instance = null;
	private function __construct() {
		if ( ! class_exists( 'WC_Admin_Post_Types', false ) ) {
			return;
		}
		remove_action( 'woocommerce_process_product_file_download_paths', array( 'WC_Admin_Post_Types', 'process_product_file_download_paths' ), 10, 3 );
		add_action( 'woocommerce_process_product_file_download_paths', array( $this, 'grant_download_permissions' ), 10, 3 );
	}
	public static function get_instance() {
		if ( null === self::$instance ) {
			self::$instance = new self;
		}
		return self::$instance;
	}
	public function grant_download_permissions( $product_id, $variation_id, $downloadable_files ) {
		global $wpdb;

		if ( $variation_id ) {
			$product_id = $variation_id;
		}

		if ( ! $product = wc_get_product( $product_id ) ) {
			return;
		}

		$existing_download_ids = array_keys( (array) $product->get_downloads() );
		$updated_download_ids  = array_keys( (array) $downloadable_files );
		$new_download_ids      = array_filter( array_diff( $updated_download_ids, $existing_download_ids ) );
		$removed_download_ids  = array_filter( array_diff( $existing_download_ids, $updated_download_ids ) );

		if ( ! empty( $new_download_ids ) || ! empty( $removed_download_ids ) ) {
			$existing_orders = $wpdb->get_col( $wpdb->prepare( "SELECT order_id from {$wpdb->prefix}woocommerce_downloadable_product_permissions WHERE product_id = %d GROUP BY order_id", $product_id ) );

			foreach ( $existing_orders as $existing_order_id ) {
				$order = wc_get_order( $existing_order_id );

				if ( $order ) {
					if ( ! empty( $removed_download_ids ) ) {
						foreach ( $removed_download_ids as $download_id ) {
							if ( apply_filters( 'woocommerce_process_product_file_download_paths_remove_access_to_old_file', true, $download_id, $product_id, $order ) ) {
								$wpdb->query( $wpdb->prepare( "DELETE FROM {$wpdb->prefix}woocommerce_downloadable_product_permissions WHERE order_id = %d AND product_id = %d AND download_id = %s", $order->get_id(), $product_id, $download_id ) );
							}
						}
					}
					if ( ! empty( $new_download_ids ) ) {
						foreach ( $new_download_ids as $download_id ) {
							if ( apply_filters( 'woocommerce_process_product_file_download_paths_grant_access_to_new_file', true, $download_id, $product_id, $order ) ) {
								if ( ! $wpdb->get_var( $wpdb->prepare( "SELECT 1=1 FROM {$wpdb->prefix}woocommerce_downloadable_product_permissions WHERE order_id = %d AND product_id = %d AND download_id = %s", $order->get_id(), $product_id, $download_id ) ) ) {
									wc_downloadable_file_permission( $download_id, $product_id, $order );
								}
							}
						}
					}
				}
			}
		}
	}
}

add_action( 'admin_init', array( 'WooCommerce_Legacy_Grant_Download_Permissions', 'get_instance' ) );

پس از آن کافیست فایل را ذخیره کنید. سپس مشکل برای شما رفع خواهد شد.

آنچه در این مطلب می خوایند

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *