Skip to content

Instantly share code, notes, and snippets.

@benoitmercusot
Created February 29, 2016 13:12
Show Gist options
  • Save benoitmercusot/f1baa0fc347fefb46339 to your computer and use it in GitHub Desktop.
Save benoitmercusot/f1baa0fc347fefb46339 to your computer and use it in GitHub Desktop.
WooCommerce order product by stock in backend
<?php
add_filter('manage_posts_columns', 'mb_add_pdt_stock_columns', 5);
add_action('manage_posts_custom_column', 'mb_add_pdt_stock_columns_display', 5, 2);
add_filter('pre_get_posts', 'mb_add_pdt_stock_columns_query', 999);
add_filter('manage_edit-product_sortable_columns', 'mb_add_pdt_stock_columns_sort');
function mb_add_pdt_stock_columns($defaults){
$defaults['mb_pdt_stock_level'] = __('Stock');
return $defaults;
}
function mb_add_pdt_stock_columns_display($column_name, $id){
if($column_name === 'mb_pdt_stock_level'){
echo get_post_meta( $id, '_stock', true );
}
}
function mb_add_pdt_stock_columns_query($query){
if( !is_admin()
|| !$query->is_main_query()
|| !$query->query['post_type']==='product'
|| !( isset($_GET['orderby']) && $_GET['orderby']==='mb_pdt_stock_level' )
|| !isset($_GET['order'])
) return;
$order = ( $_GET['order']==='asc' ) ? 'ASC' : 'DESC';
$query->set('meta_query',array(
'relation' => 'OR',
array(
'key' => '_stock',
'compare' => 'NOT EXISTS',
'value' => ''
),
array(
'key' => '_stock',
'compare' => 'EXISTS',
)
));
$query->set('orderby','meta_value_num');
$query->set('order', $order );
}
function mb_add_pdt_stock_columns_sort($sortable){
$sortable['mb_pdt_stock_level'] = 'mb_pdt_stock_level';
return $sortable;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment