Что нужно сделать, чтобы в таблице со списком продуктов магазина на 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 магазина, в противном случае - сообщение.