خرید ارزدیجیتال ارزدیجیتال
حراجی دامنه های ویژهمشاهده





آخرین ارسال های تالار مشاهده انجمن
محدودیت در فرم های گریوتی فرم 0 پاسخ 52 بازدید آپدیت نسخه نال شده افزونه یواست سئو 1 پاسخ 140 بازدید قرار دادن افزونه wp Carousel pro 1 پاسخ 864 بازدید افزونه تبلیغات حرفه ای 5 پاسخ 3153 بازدید نصب اسکریپت play tube 0 پاسخ 3264 بازدید کپی محصولات ووکامرس 2 پاسخ 4214 بازدید راستچین کردن قالب مدیریتی HTML 0 پاسخ 2292 بازدید افزونه VitePos 0 پاسخ 3613 بازدید فروش ربات تلگرامی با 40K ممبر فعال (فروشگاهی) 0 پاسخ 4304 بازدید آپدیت افزونه alkit 1 پاسخ 4278 بازدید
اپوفایننس

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

وردپرس , مقالات,آموزش,ترفند

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

 

حل مشکل آپدیت نشدن لینک دانلود ووکامرس

برای حل این مشکل باید ووکامرس را مجبور به بررسی و ارائه لینک‌های دانلود به‌صورت لحظه‌ای کنیم. وقتی در ووکامرس سفارشی ثبت می‌شود، در متاهای سفارش، لیست محصولات و لیست فایل‌های دانلود شده قرار می‌گیرد. حالا برای آپدیت کردن فایل دانلودی هیچ راهی نیست و کاربر فقط می‌تواند به فایل‌های قبلی دسترسی داشته باشد.

 

اما هیچ‌وقت محدودیتی در استفاده از وردپرس و ووکامرس نداریم. چرا که با استفاده از PHP و هوک‌های وردپرس می‌توانیم محدودیت‌ها را به صورت کامل کنار بگذاریم.

برای حل این مشکل کافیست کد زیر را به فایل 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' ) );

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

موفق باشید.

این مقاله چقدر براتون مفید بود؟

از ۱ تا ۵ امتیاز بدید.

میانگین رتبه 0 / 5. تعداد رای : 0

تا حالا کسی رای نداده! اولین نفر شما باشید.

دانلود

هاست ارزان، لایت اسپید، سرور مجازی منطبق با اسکریپت های 20script کلیک کنید >

خرید ارز
مطلب مفیدی بود ؟
نویسنده : تیم محتوای 20اسکریپت 0 وردپرس , مقالات,آموزش,ترفند
لینک کوتاه مطلب : https://www.20script.ir/?p=55291
مطالب مرتبط
برخی از قالب های وبلاگ - بیست اسکریپت
قالب عشق بین انگشت هاقالب عشق بین انگشت ها
قالب دخترونه و آرایشقالب دخترونه و آرایش
قالب زیبای ماشینقالب زیبای ماشین
قالب فانتزی و طنز چِشمقالب فانتزی و طنز چِشم
قالب دختر رویاییقالب دختر رویایی
قالب وبلاگ دکوراسیونقالب وبلاگ دکوراسیون
قالب وبلاگ کلبه و درختقالب وبلاگ کلبه و درخت
قالب دختر زیباقالب دختر زیبا
قالب پسرونه غمگینقالب پسرونه غمگین
قالب عاشقانه قلبقالب عاشقانه قلب
بیست اسکریپت
اسکریپت
profile
sourceforge
profile webmaster
profile check
checker list
checker
checker
upload file