Как вывести поле ACF в настройках экрана админки для массового редактирования товаров? Мне нужно изменить поле "Страна" при массовом редактировании товаров.
Для отображения поля ACF в разделе настроек административной панели и в настройках экрана админки для массового редактирования товаров вам понадобится использовать функцию `acf_add_options_sub_page` и хуки `admin_init` и `admin_menu`. Вот пример кода: ```php // Добавление подстраницы в раздел "Настройки" function acf_add_custom_options_page() { acf_add_options_sub_page(array( 'title' => 'Настройки', 'menu_slug' => 'custom-settings', 'parent_slug' => 'edit.php?post_type=product', 'capability' => 'edit_posts', )); } add_action('admin_menu', 'acf_add_custom_options_page'); // Регистрация полей ACF на странице "Настройки" function acf_add_custom_fields() { if( function_exists('acf_add_local_field_group') ): acf_add_local_field_group(array( 'key' => 'group_5e8a59e9e6614', 'title' => 'Настройки товаров', 'fields' => array( array( 'key' => 'field_5e8a4f54cc3d8', 'label' => 'Страна', 'name' => 'country', 'type' => 'text', ), ), 'location' => array( array( array( 'param' => 'options_page', 'operator' => '==', 'value' => 'custom-settings', ), ), ), )); endif; } add_action('acf/init', 'acf_add_custom_fields'); // Отображение поля ACF при массовом редактировании товаров function acf_add_custom_column($columns) { $columns['country'] = 'Страна'; return $columns; } add_filter('manage_edit-product_columns', 'acf_add_custom_column', 10, 1); // Заполнение значения поля ACF при массовом редактировании товаров function acf_manage_custom_column($column, $post_id) { if ($column == 'country') { $country = get_field('country', $post_id); echo $country; } } add_action('manage_product_posts_custom_column', 'acf_manage_custom_column', 10, 2); ``` В приведенном коде указано: 1. Создание подстраницы "Настройки" в разделе "Товары" административной панели. 2. Регистрация поля "Страна" на странице "Настройки" с помощью функции `acf_add_local_field_group()`. 3. Добавление столбца "Страна" при массовом редактировании товаров с помощью функции `acf_add_custom_column()`. 4. Заполнение значения поля "Страна" при массовом редактировании товаров с помощью функции `acf_manage_custom_column()`. Вы можете изменить названия полей и параметры функций, чтобы соответствовать вашим требованиям.
Доступные фильтры: bulk_actions-edit-post: Редактирование типа записи "post" bulk_actions-edit-page: Редактирование типа записи "page" bulk_actions-edit-: Редактирование пользовательского типа записи bulk_actions-edit-: Редактирование пользовательской таксономии bulk_actions-edit-comments: Список комментариев bulk_actions-plugins: Список плагинов bulk_actions-users: Список пользователей bulk_actions-upload: Медиабиблиотека (работает только в виде списка, а не в виде сетки) Примеры: Добавление пункта меню: $post_id, 'post_status' => 'publish' ]); } $redirect_url = add_query_arg('changed-to-published', count($post_ids), $redirect_url); } return $redirect_url; }, 10, 3); Вывод уведомления при выборе действия: add_action('admin_notices', function() { if (!empty($_REQUEST['changed-to-published'])) { $num_changed = (int) $_REQUEST['changed-to-published']; printf('', $num_changed); } }); Пример обработчика пункта меню: add_filter('handle_bulk_actions-edit-post', function($redirect_url, $action, $post_ids) { if ($action == 'mark-as-verified') { foreach ($post_ids as $post_id) { update_post_meta($post_id, 'verified', '1'); } $redirect_url = add_query_arg('mark-as-verified', count($post_ids), $redirect_url); } return $redirect_url; }, 10, 3); Как добавить текстовое поле для массового редактирования: Слева от кнопки "Применить" можно встроить текстовое поле. Это можно сделать с помощью JavaScript, создав скрипт в админке и подключив его через functions.php (с помощью функции Enqueue Scripts). Текстовое поле будет располагаться внутри формы для массового редактирования со выбранным действием. Чтобы обработать значение текстового поля в обработчике действия, можно использовать функцию update_field() для обновления значения вашего поля ACF в редактируемой записи.' . __('Опубликовано %d записей.', 'txtdomain') . '