/ Плагины / Изменяем админку Woocommerce

Изменяем админку Woocommerce

HIT

18.01.2018

2641

2

В данной статье собираются сниппеты меняющие функционал или внешний вид админ части Woocommerce.

Вернуть выпадающий список категорий

С версии WC 3.2 изменился фильтр постов в админке, конкретно выбор категории. Теперь сделали в виде Ajax строки поиска. Это не всегда удобно. Вернем предыдущую версию в виде выпадающего дерева категорий:

//Возвращаем в админку выпадающий список категорий
add_action( 'restrict_manage_posts', 'wcacd_category_dropdown', 15 );
function wcacd_category_dropdown() {
	// show the old dropdown category filter from WC 3.1.2
	wc_product_dropdown_categories( array( 'option_select_text' => __( 'Filter by category', 'woocommerce' ) ) );
	
	// hide the WC 3.2+ ajax category filter
	print '<style>.post-type-product .tablenav div .select2 {display:none;}</style>';
}

Переключатель уровня вложенности категорий

Решение взято с сайта wp-kama.

// Переключатель уровня категорий в админке
$taxonomy = 'product_cat';
add_action( "{$taxonomy}_add_form", function($taxonomy){
	ob_start();
} );

add_action( "after-{$taxonomy}-table", function($taxonomy){
	$html = ob_get_clean();

	$__preg_replace_callback = function( $match ){
		$val = @ $_GET['parent_only'];
		ob_start();
		?>
		<div class="alignleft actions">
			<select name="parent_only" onchange="window.add_param_to_URL(this)">
				<option value="">Все уровни...</option>
				<option value="yes" <?php selected('yes', $val) ?> >Только родители</option>
			</select>
		</div>
		<script>
		window.add_param_to_URL = function(el){
			var href = window.location.href, sep = /[?]/.test(href) ? "&" : "?", name = el.name.replace(/[^a-z_-]/i,'');
			window.location = (new RegExp(name+'=?')).test(href) ? href.replace( (new RegExp('([?&]'+name+'=?)[^&]*')), (el.value ? "$1"+ el.value : '') ) : (href + sep + name + "="+ el.value);
		}
		</script>
		<?php
		return $match[1] . ob_get_clean();
	};

	echo preg_replace_callback('~(id="doaction[^<]+</div>)~', $__preg_replace_callback, $html );
} );


add_filter('get_terms_args', 'my_terms_filter_handler');
function my_terms_filter_handler( $query ){
	if( empty($_GET['parent_only']) || ! is_admin() ) return $query;
	if( ! ( $query['fields'] == 'count' || isset($query['page'])  ) )
		 return $query;
	$query['parent'] = 0; // только родители
	return $query;
}

Сортировка по колонке Статус наличия

// Сортировка товаров по статусу наличия
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');
    }
}

Сортировка в админке по умолчанию

Можно произвольно изменить порядок вывода товаров в админке. При этом выбор сортировки по умолчанию не влияет на вывод товаров в админке.

Сортировка по названию

function sp_41964737_custom_product_order( $query ){

    global $typenow;

    if( is_admin() && $query->is_main_query() && $typenow == 'product' ){

        /* Post Column: e.g. title */
        if($query->get('orderby') == ''){
            $query->set('orderby', 'title');
        }
        /* Post Order: ASC / DESC */
        if($query->get('order') == ''){
            $query->set('order', 'ASC');
        }

    }
}
add_action( 'parse_query', 'sp_41964737_custom_product_order' );

Сортировка по статусу наличия (сначала в наличии)

function sp_41964737_custom_product_order( $query ){

    global $typenow;

    if( is_admin() && $query->is_main_query() && $typenow == 'product' ){
		
        /* Post Column: e.g. title */
        if($query->get('meta_key') == ''){
            $query->set('meta_key', '_stock_status');
        }		

        /* Post Column: e.g. title */
        if($query->get('orderby') == ''){
            $query->set('orderby', 'meta_value');
        }
		
        /* Post Order: ASC / DESC */
        if($query->get('order') == ''){
            $query->set('order', 'ASC');
        }

    }
}
add_action( 'parse_query', 'sp_41964737_custom_product_order' );

Тэги: ,

Поделится информацией с друзьями

  • Похожие записи
  • Комментарии
  • Вложения
Подарок за покупку

Подарок за покупку

Изучим и рассмотрим такой инструмент продаж как подарок за покупку. Вариантов такого поощрения может быть масса: подарок при покупке конкретного товара (из конкретной категории), подарок при наборе в корзине определенной Читать далее »

Кастомный метод платежа

Кастомный метод платежа

Создадим собственный метод платежа. Это может быть простой не предусмотренный изначально в WC метод: оплата курьеру картой, квитанция и прочие. Добавление подобных способов оплаты поможет на более раннем этапе понять Читать далее »

Metabox woocommerce

Metabox woocommerce

У плагина woocommerce есть набор дополнительных полей при редактировании товара. При необходимости можно в группы полей WC добавить свои произвольные metabox. Должно получится так: Создание и отображение metabox Первый экшн Читать далее »

/

Добавить комментарий

2 комментария

  1. Аватар
    Вячеслав

    Здравствуйте.
    Подскажите как сделать в админке вукомерца поиск по артикулу.

    1. Alexandr
      Alexandr

      Попробуйте, как вариант, плагин Search by SKU for Woocommerce. Он расширяет поиск товаров по артикулу. Не могу только точно сказать работает ли в админке.

Изменяем админку Woocommerce
Filter и Action
Рекомендации для васFilter и ActionOpttour.ru
Спасибо! Наш менеджер свяжется с Вами в течении 5 минут.