Отключаем лишний функционал Woocommerce

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

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

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). Отключаем это:

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);
}