Как в таблицу продуктов WooCommerce добавить дополнительную колонку

Как в таблицу продуктов WooCommerce добавить дополнительную колонку

Что нужно сделать, чтобы в таблице со списком продуктов магазина на WordPress добавить дополнительную колонку? На самом деле, добавление новых колонок в плагин Woo ничем не отличается от добавления новых колонок скажем в таблицу с обычными постами.

Для этого нам нужно будет использовать два динамических хука:

  • manage_{post_type}_posts_columns - для добавления названия колонки (в таблице html это table → thead → th → td → заголовок колонки;
  • manage_{post_type}_posts_custom_column - для заполнения ячеек таблицы с продуктами дополнительной информацией (в таблице hml размещено здесь - table → tbody → tr → td → содержимое ячейки.

Пример

В качестве примера, предлагаю добавить колонку с магазинами которым принадлежит данный продукт. Для этого добавим фильтр с названием 'manage_product_posts_columns'. Где “product” это название пост-тайпа woo продуктов:

add_filter('manage_product_posts_columns', function($defaults)
{
	$columns = [];
	foreach($defaults as $field => $value)
	{
		if($field == 'date')
		{
			$columns['shop'] = __('Shop', 'xyz');
		}
		$columns[$field] = $value;
	}
	
	return $columns;
}, 100);

В примере выше, мы использовали цикл чтобы отобразить колонку перед датой, а не в самом конце.

Далее, нам нужно заполнить ячейки таблицы данными. Для этого обратимся к хуку-экшину 'manage_product_posts_custom_column'. Где “product” также post_type продуктов вукомерса. Первым параметром ф-и у нас идет название колонок таблицы (их может быть сколько угодно), а вторым - ID текущего поста таблицы из списка.

add_action('manage_product_posts_custom_column', function($column_name, $post_ID)
{
	switch($column_name)
	{
		case 'shop':
			$shop_id = get_post_meta($post_ID, 'shop_id', true);
			
			echo $shop_id ? $shop_id : __('Shop not found', ‘xyz’);
		break;
	}
}, 10, 2);

В качестве примера, мы берем данные из мета-поля поста с ключом 'shop_id', и если данные в БД есть то отображаем ID магазина, в противном случае - сообщение.

Поделиться в соцсетях:

С вашим WordPress сайтом проблемы? нужен дополнительный функционал? нестандартный плагин или сверстать новую страницу?
Тогда напишите мне через форму обратной связи, и я постараюсь вам помочь.

Оставить комментарий

Ваш адрес email не будет опубликован.