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

1 . حذف کامل کلید در صفحه آرشیو / دسته بندی و حلقه لیست محصولات
صفحاتی مانند برچسب ها، دسته بندی ها، صفحه اصلی فروشگاه و لیست هایی که محصولات در آن دریافت می شود عموما یک کلید افزودن به سبد خرید سریع دارند. این کلید بطور عادی توسط افزونه ووکامرس اضافه می شود ولی می توانید به راحتی این کلید را از این حلقه های یاد شده حذف کنید. برای اینکار کافیست تکه کد زیر را به انتهای فایل functions.php
قالبتان اضافه کنید.
remove_action( 'woocommerce_after_shop_loop_item', 'woocommerce_template_loop_add_to_cart');
2 . حذف کامل کلید از صفحه تکی محصول / ادامه مطلب محصولات
اگر قصد دارید کلید افزودن به سبد خرید از ادامه مطلب محصول حذف شود و کد مخصوص خودتان را به دلخواه کدنویسی کنید، از این کد باید استفاده کنید. این کد کلید پیش فرض خرید محصول را حذف می کند اما فراموش نکنید که باید حتما بطور دستی یک کلیدی برای افزودن محصول به سبد خرید در اختیار کاربرانتان قرار دهید. تکه کد زیر را به انتهای فایل functions.php
قالبتان اضافه کنید.
remove_action( 'woocommerce_single_product_summary', 'woocommerce_template_single_add_to_cart', 30 );
3 . تغییر کلید افزودن به سبد خرید و تبدیل به “مشاهده بیشتر”
اگر قصد دارید کلید افزودن به سبد خرید فوری که اکثر قالب ها دارند را حذف کنید و قصد دارید بجای آن یک کلید دیگر به عنوان “ادامه مطلب” یا “مشاهده بیشتر” اضافه کنید تا کاربران بدانند که برای اطلاعات بیشتر باید وارد صفحه محصول شوند، می توانید بجای کدهای قبل، از این کد استفاده کنید. کد زیر را به انتهای فایل functions.php
قالبتان اضافه کنید.
add_filter( 'woocommerce_is_purchasable', '__return_false');
نتیجه:

4 . مخفی کردن کلید افزودن به سبد خرید خودکار برای کاربران مهمان (وارد حساب نشده)
اگر قصد دارید کلید افزودن به سبد خرید فوری را برای کاربرانی که وارد حساب خود نشده اند، غیرفعال کنید، می توانید از دستور شرطی استفاده کنید. دستور شرطی زیر را می توانید به دلخواه خود ویرایش کنید که درا ینجا ما نمونه کد تبدیل کلید خرید به کلید ادامه مطلب را مثال زده ایم. کد زیر را به انتهای فایل functions.php
قالبتان اضافه کنید.
if (!is_user_logged_in()) {
add_filter('woocommerce_is_purchasable', '__return_false');
}
در خط دوم شما باید کد موردنظر را جایگزین کنید. کدهای قبلی را می توانید بجای این خط وارد کنید.
5 . مخفی کردن کلید افزودن به سبد خرید برای نقش کاربری دلخواه
اگر قصد دارید کلید خرید برای نقش کاربری خاصی مخفی کنید می توانید از یک دستور شرطی دیگر استفاده کنید. در اینجا ما بعنوان مثال تصمیم داریم این کلید را برای کاربرانی که نقش مدیریت دارند مخفی کنیم. بنابراین دستور شرطی ما به همراه کد مخفی کردن کلید افزودن به سبد خرید به این صورت خواهد بود. کد زیر را به انتهای فایل functions.php
قالبتان اضافه کنید.
add_action('wp_loaded','betalk_get_user_role');
function betalk_get_user_role(){
$current_user = wp_get_current_user();
if(count($current_user->roles)!==0){
if($current_user->roles[0]=='administrator'){
add_filter('woocommerce_is_purchasable', '__return_false');
}
}
}
در کد بالا، دو دستور شرطی وجود دارد. ابتدا در دستور if(count($current_user->roles)!==0){
بررسی می شود که کاربر حتما دارای یک نقش کاربری باشد. یعنی با این کد، کاربرانی که وارد اکانت نشده اند از کاربران وارد شده تفکیک می شوند، سپس در شرط بعدی یعنی if($current_user->roles[0]=='administrator'){
تعیین می کنیم که اگر نقش کاربری administrator
است کد مربوط به حذف کلید افزودن به سبد خرید اجرا شود.
شما می توانید این کد را به هر حالتی که دوست دارید تبدیل کنید!
6 . حذف کلید برای محصولات دلخواه و مشخص با آی دی
حالت بعدی این است که ما قصد داشته باشیم کلید افزودن به سبد خرید را برای محصولات دلخواهمان حذف کنیم. در این حالت ما می توانیم یک یا چند آی دی را تعیین کنیم که کلید خرید از آن محصولات حذف شود! کد زیر را به انتهای فایل functions.php
قالبتان اضافه کنید.
add_filter('woocommerce_is_purchasable', 'betalk_filter_is_purchasable', 10, 2);
function betalk_filter_is_purchasable($is_purchasable, $product ) {
global $product;
if( in_array( $product->get_id(), betalk_not_purchasable_ids() )) {
return false;
}
return $is_purchasable;
}
function betalk_not_purchasable_ids() {
return array( 624,625 );
}
در کد بالا، کافیست در خط return array( 624,625 );
بجای 624 و 625، آی دی محصولات دلخواهتان را وارد کنید. هر تعداد آی دی که قصد دارید را با کاما انگلیسی از هم جدا کنید و در همین قسمت جایگزین این دو عدد کنید.
آی دی محصولات را می توانید از آدرس صفحه ویرایش محصولات موردنظرتان پیدا کنید.

7 . حذف کلید از محصولات دسته بندی دلخواه
گاهی اوقات در برخی از فروشگاه ها پیش می آید که یک دسته بندی داشته باشند و بخواهند محصولاتی که در آن دسته بندی ارسال می شوند کلید افزودن به سبد خرید فوری نداشته باشند. یا اینکه قصد داشته باشید بجای وارد کردن آی دی محصولات در کد قبل، یک دسته بندی بسازید و محصولاتی که می خواهید این کلید را نداشته باشند را در آن دسته بندی ارسال کنید. بنابراین می توانید از این کد استفاده کنید:
add_action('wp', 'betalk_remove_add_to_cart_from_category' );
function betalk_remove_add_to_cart_from_category(){
if( is_product_category( 'laptops' ) ) {
remove_action( 'woocommerce_after_shop_loop_item', 'woocommerce_template_loop_add_to_cart');
}
}
در کد بالا در خط if( is_product_category( 'laptops' ) ) {
بجای عبارت laptops
شما باید نامک یا همان Slug یا عبارت آدرس دسته بندی موردنظرتان را وارد کنید. اگر Slug دسته بندی موردنظرتان فارسی است، پیشنهاد می کنیم آن را انگلیسی کنید!
8 . حذف کردن کلید تا تاریخ مشخص برای یک محصول دلخواه با آی دی
در برخی شرکت های تولیدی که فروشگاهشان با ووکامرس ساخته شده است، شاید یک محصولی را درحال تولید باشند و داخل فروشگاه بخواهند معرفی کنند و در یک تاریخ مشخص به کاربران اجازه خرید را بدهند و قصد داشته باشند که کلید افزودن به سبد خرید تا تاریخ دلخواهشان مخفی باشد و بعد از آن تاریخ بطور خودکار نمایش داده شود. شما می توانید برای اینکار کد زیر را به انتهای فایل functions.php
قالبتان اضافه کنید.
add_filter( 'woocommerce_is_purchasable', 'hide_add_to_cart_button_until_date', 10, 2 );
function hide_add_to_cart_button_until_date( $is_purchasable = true, $product ) {
$current_date = date('Y-m-d');
$release_date = date( 'Y-m-d', strtotime('2020-12-15') );
if( strtotime($current_date) < strtotime($release_date) && $product->get_id() == 624 ) {
$is_purchasable = false;
}
return $is_purchasable;
}
کد بالا دو تنظیمات مهم دارد که باید انجام دهید.
- بجای
2020-12-15
دقیقا با همین فرمت روز-ماه-سال به میلادی، تاریخ موردنظرتان را وارد کنید. این تاریخ همان تاریخی است که بعد از آن کلید خرید فعال می شود.
- سپس در کد
$product->get_id() == 624
بجای عدد 624، آی دی محصول موردنظر را وارد کنید.
اکنون کد شما آماده است!
سعی کردیم در این تاپیک تمامی حالات ممکن برای حذف یا تغییر این کلید را در اختیارتان قرار دهیم. در صورتی که نیاز به راهنمایی بیشتر یا حالت دیگری دارید در همین تاپیک مطرح کنید.