Palych_tw
@Palych_tw
Типа веб-разработчик

Сортировка товаров в админке Woocommerce?

Не могу найти никакого решения или плагина. Нужно в админке(!) сделать возможность отсортировать товары по наличию. По умолчанию сортируется по имени, цене, дате и пр. а вот по наличию нельзя. Для клиента критично.6cac29cf529e43ffaa75bb359edda341.png
  • Вопрос задан
  • 2041 просмотр
Решения вопроса 1
Palych_tw
@Palych_tw Автор вопроса
Типа веб-разработчик
Нашел решение. Может пригодится кому. Вот готовое решение в functions.php
add_filter( 'manage_edit-product_sortable_columns', 'my_product_sorting_column' );

function my_product_sorting_column( $columns ) {
    $columns['is_in_stock'] = 'in_stock';

    return $columns;
}
add_action( 'pre_get_posts', 'my_product_sorting' );

function my_product_sorting( $query ) {

    if( ! is_admin() )
        return;

    $orderby = $query->get( 'orderby');

    if( 'in_stock' == $orderby ) {
        $query->set('meta_key','_stock_status');
        $query->set('orderby','meta_value');
    }
}

Данный код делает уже существующую колонку сортируемой, в хук pre_get_posts добавляет саму сортировку. Почитать подробнее можно здесь wp-kama.ru/id_995/dopolnitelnyie-sortiruemyie-kolo...
Здесь, в том числе, добавление своей колонки в админку (у нас колонка уже есть).
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@IvanBox
Woocommerce сортировка товаров в админке по дате их изменения:
//создаем новую колонку
add_filter( 'manage_edit-product_columns', function ( $columns ) {
	$columns['post_modified'] = 'Изменено';

	return $columns;
} );

//заполняем
add_action( 'manage_product_posts_custom_column', function ( $column_name, $post_id ) {
	//die( var_dump( $columns ) );
	if ( $column_name === 'post_modified' ) {
		$post = get_post( $post_id );
		echo $post->post_modified;
	}
}, 10, 2 );

//добавляем возможность сортировки
add_filter( 'manage_edit-product_sortable_columns', function ( $sortable_columns ) {
	$sortable_columns['post_modified'] = [ 'post_modified', true ]; // true  = desc

	return $sortable_columns;
} );
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы