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

چگونگی پیدا کردن شناسه درگاه‌های پرداخت در ووکامرس

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

پیدا کردن شناسه درگاه پرداخت در ووکامرس
پیدا کردن شناسه درگاه پرداخت در ووکامرس

نکته: به منظور اجرای کدهای کاربردی، می‌توانید آن‌ها را در فایل functions.php پوسته فرزند قرار دهید یا از افزونه Code Snippets استفاده نمایید.

غیرفعال کردن درگاه برای دسته‌بندی خاص

در صورتی که می‌خواهید درگاه پرداختی را برای یک یا چند دسته‌بندی غیرفعال کنید، قطعه کد زیر این کار را برای شما انجام خواهد داد. به منظور غیرفعال کردن یک یا چند دسته‌بندی خاص، کافی است شناسه‌های دسته‌بندی را در متغیر category_ids$ مقداردهی کنید.

/**
 * @snippet       Disable Payment Method for Specific Category
 * @author        Rodolfo Melogli
 * @compatible    WC 3.6.5
 */

add_filter( 'woocommerce_available_payment_gateways', 'tidaweb_unset_gateway_by_category' );
  
function tidaweb_unset_gateway_by_category( $available_gateways ) {
    if ( is_admin() ) return $available_gateways;
    if ( ! is_checkout() ) return $available_gateways;
    $unset = false;
    $category_ids = array( 8, 37 ); // set category ids for disable gateway
    foreach ( WC()->cart->get_cart_contents() as $key => $values ) {
        $terms = get_the_terms( $values['product_id'], 'product_cat' );    
        foreach ( $terms as $term ) {        
            if ( in_array( $term->term_id, $category_ids ) ) {
                $unset = true;
                break;
            }
        }
    }
    if ( $unset == true ) unset( $available_gateways['cod'] );
    return $available_gateways;
}
غیر فعال کردن درگاه اینترنتی براساس موجود بودن دسته‌بندی خاص در سبد خرید
غیر فعال کردن درگاه اینترنتی براساس موجود بودن دسته‌بندی خاص در سبد خرید

فعال/غیرفعال کردن درگاه برای یک نقش کاربر خاص

گاهی اوقات ممکن است بخواهید یک درگاه را برای یک نقش خاص، فعال یا غیرفعال کنید. این کار را می‌توان براساس توانایی کاربر در وردپرس انجام داد. به عنوان مثال در صورتی که کاربر مدیر فروشگاه بود و توانایی مدیریت ووکامرس را داشت، بتواند درگاه Paypal را مشاهده نماید.

تکمیل خودکار سفارشات در ووکامرس

با استفاده از قطعه کد زیر می‌توانید یک درگاه را برای یک نقش کاربر فعال نمایید.

/**
 * @snippet       Disable Payment Gateway for a Specific User Role | WooCommerce
 * @author        Rodolfo Melogli
 * @testedwith    WooCommerce 3.8
 */
  
add_filter( 'woocommerce_available_payment_gateways', 'tidaweb_paypal_enable_manager' );
  
function tidaweb_paypal_enable_manager( $available_gateways ) {
   if ( isset( $available_gateways['paypal'] ) && ! current_user_can( 'manage_woocommerce' ) ) {
      unset( $available_gateways['paypal'] );
   } 
   return $available_gateways;
}

با استفاده از قطعه کد زیر می‌توانید یک درگاه را برای یک نقش کاربر غیرفعال نمایید.

/**
 * @snippet       Disable Payment Gateway for a Specific User Role | WooCommerce
 * @author        Rodolfo Melogli
 * @testedwith    WooCommerce 3.8
 */
  
add_filter( 'woocommerce_available_payment_gateways', 'tidaweb_paypal_disable_manager' );
  
function tidaweb_paypal_disable_manager( $available_gateways ) {
   if ( isset( $available_gateways['paypal'] ) && current_user_can( 'manage_woocommerce' ) ) {
      unset( $available_gateways['paypal'] );
   } 
   return $available_gateways;
}

فعال/غیرفعال کردن درگاه برای یک کشور خاص

در برخی شرایط ممکن است بخواهید کاربران یک کشور مثل آمریکا از درگاه Paypal و کاربران سایر کشورها از درگاه‌های دیگر استفاده کنند. قطعه کد زیر به شما کمک خواهد کرد که براساس کشور انتخابی کاربر، درگاه پرداخت را فعال یا غیرفعال نمایید.

/**
 * @snippet       WooCommerce Disable Payment Gateway for a Specific Country
 * @author        Rodolfo Melogli
 * @compatible    WooCommerce 4.0
 */

add_filter( 'woocommerce_available_payment_gateways', 'tidaweb_payment_gateway_disable_country' );
  
function tidaweb_payment_gateway_disable_country( $available_gateways ) {
    if ( is_admin() ) return $available_gateways;
    if ( isset( $available_gateways['authorize'] ) && WC()->customer->get_billing_country() <> 'US' ) {
        unset( $available_gateways['authorize'] );
    } else {
        if ( isset( $available_gateways['paypal'] ) && WC()->customer->get_billing_country() == 'US' ) {
            unset( $available_gateways['paypal'] );
        }
    }
    return $available_gateways;
}

فعال/غیرفعال کردن درگاه برای حمل و نقل خاص

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

/**
 * @snippet       Disable Payment Gateway For Specific Shipping Method
 * @author        Rodolfo Melogli
 * @testedwith    WooCommerce 3.6.2
 */
  
add_filter( 'woocommerce_available_payment_gateways', 'tidaweb_gateway_disable_shipping_326' );
  
function tidaweb_gateway_disable_shipping_326( $available_gateways ) {
     
    if ( ! is_admin() ) {

        $chosen_methods = WC()->session->get( 'chosen_shipping_methods' );

        $chosen_shipping = $chosen_methods[0];

        if ( isset( $available_gateways['cod'] ) && 0 === strpos( $chosen_shipping, 'local_pickup' ) ) {
            unset( $available_gateways['cod'] );
        }

    }

    return $available_gateways;
     
}
غیر فعال کردن درگاه اینترنتی براساس انتخاب حمل و نقل خاص در تسویه حساب
غیر فعال کردن درگاه اینترنتی براساس انتخاب حمل و نقل خاص در تسویه حساب

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

دریافت اطلاعات سبد خرید در ووکامرس

منبع : Business Bloomer

۴.۷/۵ - (۱۱۴ امتیاز)

2 thoughts on “غیرفعال کردن درگاه پرداخت براساس شرایط در ووکامرس

  1. مجتبی میگوید:

    با سلام
    من از درگاه زرینپال استفاده میکنم و هرازگاهی در بعضی مرورگر ها درگاه من تغییر میکنه و این Credit/Debit Card Secure Payment درگاه ظاهر میشه
    برای ظاهر نشدن این ارور باید چیکار کنم

    • مدیر سایت میگوید:

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

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

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