Як до таблиці продуктів WooCommerce додати додаткову колонку

Як до таблиці продуктів WooCommerce додати додаткову колонку

Що потрібно зробити, щоб у таблиці зі списком продуктів магазину на WordPress додати додаткову колонку? Насправді, додавання нових колонок у плагін WooCommerce нічим не відрізняється від додавання колонок у таблицю зі звичайними постами.

Для цього нам потрібно використати два динамічні хуки:

  • manage_{post_type}_posts_columns — для додавання назви колонки (в HTML-таблиці це: table → thead → th → td → заголовок колонки);
  • manage_{post_type}_posts_custom_column — для заповнення комірок таблиці з продуктами додатковою інформацією (в HTML-таблиці це: table → tbody → tr → td → вміст комірки).

Приклад

У якості прикладу, пропоную додати колонку з магазинами, яким належить відповідний продукт. Для цього додамо фільтр з назвою 'manage_product_posts_columns'. Де “product” — це назва post type для продуктів WooCommerce:

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

У прикладі вище ми використали цикл, щоб відобразити колонку перед датою, а не в самому кінці таблиці.

Далі, нам потрібно заповнити комірки таблиці даними. Для цього використаємо action-хук 'manage_product_posts_custom_column'. Де “product” — це також post type для продуктів WooCommerce. Першим параметром функції виступає назва колонки таблиці (їх може бути скільки завгодно), а другим — 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 сайтом проблеми? потрібний додатковий функціонал? нестандартний плагін чи згорнути нову сторінку?
Тоді напишіть мені через форму зворотного зв'язку, і я намагатимусь вам допомогти.

Напишіть коментар

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *