Как добавить дополнительную колонку в список методов доставки в панели управления WooCommerce?

Ссылка скопирована
1 ответ

Есть вот такой код,

add_action('woocommerce_init', 'woocommerce_shipping_instances_form_fields_filters'); function woocommerce_shipping_instances_form_fields_filters(){     foreach( WC()->shipping->get_shipping_methods() as $shipping_method ) {         add_filter('woocommerce_shipping_instance_form_fields_' . $shipping_method->id, 'shipping_methods_additional_custom_field');     } }  function shipping_methods_additional_custom_field( $settings ) {     $settings['shipping_comment'] = array(         'title'         => __('Shipping Comment', 'woocommerce'),         'type'          => 'textarea',          'placeholder'   => __( 'Enter any additional comments for this shipping method.', 'woocommerce' ),     );     return $settings; }

add_action('woocommerce_init', 'woocommerce_shipping_instances_form_fields_filters'); function woocommerce_shipping_instances_form_fields_filters(){ foreach( WC()->shipping->get_shipping_methods() as $shipping_method ) { add_filter('woocommerce_shipping_instance_form_fields_' . $shipping_method->id, 'shipping_methods_additional_custom_field'); } } function shipping_methods_additional_custom_field( $settings ) { $settings['shipping_comment'] = array( 'title' => __('Shipping Comment', 'woocommerce'), 'type' => 'textarea', 'placeholder' => __( 'Enter any additional comments for this shipping method.', 'woocommerce' ), ); return $settings; }

который добавляет дополнительное поле для комментария, при редактировании метода доставки в настройках Woocommerce

Как добавить дополнительную колонку в список методов доставки в панели управления WooCommerce?

Как мне добавить дополнительную колонку в списке методов доставки в настройках Woocommerce и чтобы в ней отображались эти комментарии?

Вот здесь

Как добавить дополнительную колонку в список методов доставки в панели управления WooCommerce?

Дополнительно:

Нужно решить такую задачу?

Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.

Заказать помощь
Лучший ответ
1
Антон С. Ответ

Поле в настройках метода доставки Вы уже добавили правильно через фильтр woocommerce_shipping_instance_form_fields_.... Чтобы показать это значение в списке методов доставки, нужно понимать ограничение: стандартный экран зон доставки WooCommerce не даёт удобного публичного хука для добавления произвольной колонки в таблицу методов так же просто, как в списке записей.

Самый безопасный вариант — добавить комментарий прямо в title/description метода или вывести его рядом с названием через фильтры отображения настроек. Если нужна именно отдельная колонка в админке, чаще всего делают небольшой JS в админке, который после загрузки таблицы подтягивает сохранённые значения и вставляет колонку.

Сохранённое значение instance-поля лежит в option вида:

woocommerce_flat_rate_12_settings

woocommerce_flat_rate_12_settings

где flat_rate — ID метода, а 12 — instance_id. Получить его можно так:

$instance_id = 12;
$method_id = 'flat_rate';
$settings = get_option("woocommerce_{$method_id}_{$instance_id}_settings", []);
$comment = $settings['shipping_comment'] ?? '';

$instance_id = 12; $method_id = 'flat_rate'; $settings = get_option("woocommerce_{$method_id}_{$instance_id}_settings", []); $comment = $settings['shipping_comment'] ?? '';

Если задача внутренняя и достаточно видеть комментарий при редактировании метода, оставьте поле там. Если менеджеру нужно видеть его в общем списке зон, лучше сделать отдельную страницу отчёта: зона, метод, instance ID, комментарий. Это надёжнее, чем ломать административную таблицу WooCommerce, которую WooCommerce может изменить обновлением.

Если всё-таки добавлять колонку в существующий экран, делайте это отдельным админским JS только на странице wc-settings&tab=shipping, без правки файлов WooCommerce. Значения комментариев можно передать в JS через wp_localize_script(), собрав их из всех зон доставки.

Другие ответы (0)

Пока нет других ответов. Будьте первым, кто поможет автору.

Ответить на вопрос

комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Вам также может быть интересно