Що потрібно зробити, щоб у таблиці зі списком продуктів магазину на 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 магазину, інакше — повідомлення.
