گاهی اوقات ممکن است برحسب شرایط بخواهید برخی از درگاههای پرداخت را غیرفعال نمایید تا کاربران نتوانند از طریق آن درگاه پرداخت خود را انجام دهند. این کار نیازمند یک سری توابع بوده که باید کدنویسی شده و به ووکامرس اضافه گردند. ما در این مقاله قرار است غیرفعال کردن درگاه پرداخت براساس شرایط در ووکامرس را به شما آموزش دهیم.
آنچه در این مقاله میخوانید
چگونگی پیدا کردن شناسه درگاههای پرداخت در ووکامرس
در صورتی که بخواهید یک یا چند درگاه ووکامرس را با استفاده از ترفندها و کدهای کاربردی غیرفعال کنید، باید شناسه آن درگاه را داشته باشید. در تصویر زیر به شما نحوه بدست آوردن شناسه درگاههای پرداخت در ووکامرس را آموزش دادیم.
نکته: به منظور اجرای کدهای کاربردی، میتوانید آنها را در فایل 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
با سلام
من از درگاه زرینپال استفاده میکنم و هرازگاهی در بعضی مرورگر ها درگاه من تغییر میکنه و این Credit/Debit Card Secure Payment درگاه ظاهر میشه
برای ظاهر نشدن این ارور باید چیکار کنم
باسلام
این خطا باید از تداخل درگاههای سایت شما به وجود آمده باشد. ابتدا افزونه درگاه را بهروزرسانی نمایید و سپس با توسعه دهنده سایت خود در تماس باشید تا مشکلتان را برطرف نماید.
باتشکر