Отключаем невостребованные функции WooCommerce, чтобы было легче работать, не захламлять админку и не путать заказчиков.

Зачем убирать лишнее#

WooCommerce часто ставят «с запасом», а потом в админке остаются типы товаров, чекбоксы и блоки, которыми конкретный магазин не пользуется. Для разработчика это шум, для клиента — лишние варианты, где легко ошибиться.

Убирать нужно только то, что действительно не участвует в продажах. Перед правкой проверьте текущие товары, сценарии оформления заказа и плагины, которые могут ждать эти поля.

Отключить типы товаров

add_action("wp_footer", "wooexperts_remove_block_data", 0);
add_action("admin_enqueue_scripts", "wooexperts_remove_block_data", 0);
function wooexperts_remove_block_data() {
  remove_filter(
    "wp_print_footer_scripts",
    array("Automattic\WooCommerce\Blocks\Assets", "print_script_block_data"),
    1,
  );
  remove_filter(
    "admin_print_footer_scripts",
    array("Automattic\WooCommerce\Blocks\Assets", "print_script_block_data"),
    1,
  );
}
add_filter("product_type_selector", "misha_remove_grouped_and_external");

function misha_remove_grouped_and_external($product_types) {
  unset($product_types["grouped"]);
  unset($product_types["external"]);
  //unset( $product_types['variable'] );

  return $product_types;
}

Если существуют товары отключённого типа — они не будут доступны в админке, т. е. их нужно заранее перевести в другой тип.

Удалить чекбоксы «Виртуальный» и «Загружаемый»

add_filter("product_type_options", function ($options) {
  // remove "Virtual" checkbox
  if (isset($options["virtual"])) {
    unset($options["virtual"]);
  }

  // remove "Downloadable" checkbox
  if (isset($options["downloadable"])) {
    unset($options["downloadable"]);
  }

  return $options;
});

Удалить их также из фильтра админки:

add_filter( 'woocommerce_products_admin_list_table_filters', function( $filters ) {

if( isset( $filters[ 'product_type' ] ) ) {
$filters[ 'product_type' ] = 'misha_product_type_callback';
}
return $filters;

});

function misha_product_type_callback(){
$current_product_type = isset( $_REQUEST['product_type'] ) ? wc_clean( wp_unslash( $_REQUEST['product_type'] ) ) : false;
$output = '<select name="product_type" id="dropdown_product_type"><option value="">Filter by product type</option>';

foreach ( wc_get_product_types() as $value => $label ) {
$output .= '<option value="' . esc_attr( $value ) . '" ';
$output .= selected( $value, $current_product_type, false );
$output .= '>' . esc_html( $label ) . '</option>';
}

$output .= '</select>';
echo $output;
}

Лишний код#

С приходом редактора Gutenberg в коде WooCommerce стало выводиться много лишнего (wc_product_block_data). Отключаем:

Перед внедрением#

Сначала проверьте магазин на копии или staging. В WooCommerce типы товаров и product options могут использоваться темой, импортом, интеграцией склада или платёжным сценарием.

После отключения лишнего откройте карточку товара, список товаров, фильтры админки и оформление заказа. Если редактору стало проще, а продажи не сломались, правка имеет смысл.


Если WooCommerce разрастается лишними экранами, типами записей и кодом, который мешает админке и скорости, его можно аккуратно зачистить под реальный магазин. Напишите мне в Telegram или на почту — помогу убрать лишнее, не ломая продажи, каталог и обновления.