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

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

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

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

نکته: به منظور اجرای کدهای کاربردی، می‌توانید آن‌ها را در فایل 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 را مشاهده نماید.

نوشته مرتبط
وردپرس 5 "Bebo"

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

/**
 * @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

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

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