یکی از قابلیت های کاربردی و مفیدی که ووکامرس در بخش محصولات ارائه می کند امکان ویرایش سریع و کلی محصولات است. شما می توانید ابتدا محصولات مورد نظر خود را با زدن تیک کناری انتخاب کنید سپس از طریق بخش “کارهای دسته جمعی” اقدام به ویرایش کلی آنها نمایید. مثلاً می توانید قیمت، وضعیت موجودی در انبار، وزن، کلاس حمل و نقل، برچسب و… برای دسته محصولات انتخابی را ویرایش کنید.

غیر فعال کردن رنج قیمت در محصولات متغیر ووکامرس

ویرایش کلی و سریع دسته بندی محصولات ووکامرس
ویرایش کلی و سریع دسته بندی محصولات ووکامرس

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

فرض کنید 10 محصول در دسته لوازم شخصی دارید اما در نظر دارید دسته ای به نام لوازم ورزشی ایجاد کنید و این 10 محصول را از دسته بندی قبلی به دسته بندی جدید منتقل کنید. از طریق ویرایش کلی پیش فرض محصولات صرفاً قادر هستید دسته بندی لوازم ورزشی را به محصولات اضافه کنید ولی همچنان دسته بندی قبلی (لوازم شخصی) نیز به محصولات متصل است. برای حذف این دسته بندی از محصولات مجبور هستید به صورت تک به تک کالاها را ویرایش نمایید و دسته لوازم شخصی را حذف کنید که این امر کاری زمان بر است.

شورتکد نمایش محصولات ووکامرس [همه حالت ها]

نحوه حذف دسته بندی از محصولات ووکامرس به صورت کلی

برای رفع این مشکل در بخش ویرایش کلی دسته بندی محصولات ووکامرس می توانید از ترفند زیر استفاده نمایید. کافیست کد زیر را در فایل فانکشن قالب وردپرسی خود قرار دهید تا گزینه حذف دسته بندی به بخش ویرایش کلی محصولات اضافه شود. حال می توانید به راحتی محصولات مورد نظر خود را به صورت کلی ویرایش کنید و دسته بندی های مورد نظر خود را به محصولات اضافه کرده یا حذف نمایید.

اضافه کردن امکان حذف دسته بندی از محصولات در ویرایش کلی محصولات ووکامرس
اضافه کردن امکان حذف دسته بندی از محصولات در ویرایش کلی محصولات ووکامرس
/**
 * @snippet       Bulk Remove Product Categories From WooCommerce Products Admin
 * @compatible    WooCommerce 8
 */
 
add_action( 'woocommerce_product_bulk_edit_start', 'wpwave_bulk_edit_remove_product_category' );
 
function wpwave_bulk_edit_remove_product_category() {
   ?>    
   <div class="inline-edit-group">
      <label class="alignleft">
         <span class="title"> حذف دسته</span>
         <span class="input-text-wrap">
            <?php wc_product_dropdown_categories( [ 'class' => 'remove_product_cat', 'name' => 'remove_product_cat', 'show_option_none' => 'یک دسته بندی را برای حذف انتخاب کنید', 'value_field' => 'term_id' ] ); ?>
         </span>
      </label>
   </div>         
   <?php
}
 
add_action( 'woocommerce_product_bulk_edit_save', 'wpwave_bulk_edit_remove_product_category_save', 9999 );
  
function wpwave_bulk_edit_remove_product_category_save( $product ) {
   $post_id = $product->get_id();    
   if ( isset( $_REQUEST['remove_product_cat'] ) ) {
      $cat_to_remove = $_REQUEST['remove_product_cat'];
      $categories = $product->get_category_ids();
      if ( ! in_array( $cat_to_remove, $categories ) ) return;
      if ( ( $key = array_search( $cat_to_remove, $categories ) ) !== false ) {
         unset( $categories[$key] );
      }
      $product->set_category_ids( $categories );
      $product->save();
   }
}