pro100taa
@pro100taa

Как вывести поле ACF в настройках экрана админки?

Подскажите, пожалуйста, как вывести поле ACF в настройках экрана админки? Это возможно? Мне необходимо для массового редактирования товаров.

Скажем, есть созданное в ACF поле "Страна", где можно выбрать страну происхождения товара. Мне необходимо, чтобы в админке при массовом редактировании товаров, я мог изменить это поле.
  • Вопрос задан
  • 129 просмотров
Пригласить эксперта
Ответы на вопрос 2
solidcreature
@solidcreature
Развиваю сообщество WordPress в Москве
Здравствуйте, по-моему плагин Admin Columns с плагином для ACF будет решать эту задачу
Ответ написан
Комментировать
@Gamelot
Программист php
Доступные фильтры:

bulk_actions-edit-post: Post type ‘post’ edit screen
bulk_actions-edit-page: Post type ‘page’ edit screen
bulk_actions-edit-: Custom post type edit screen
bulk_actions-edit-: Custom taxonomy edit screen
bulk_actions-edit-comments: Comments list screen
bulk_actions-plugins: Plugins list screen
bulk_actions-users: Users list screen
bulk_actions-upload: Media library list (only works in list view, not grid view)

Примеры:

Добавляет пункт меню:
<?php
add_filter('bulk_actions-edit-post', function($bulk_actions) {
	$bulk_actions['change-to-published'] = __('Change to published', 'txtdomain');
	return $bulk_actions;
});


Обработчик пункта меню:
add_filter('handle_bulk_actions-edit-post', function($redirect_url, $action, $post_ids) {
	if ($action == 'change-to-published') {
		foreach ($post_ids as $post_id) {
			wp_update_post([
				'ID' => $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('<div id="message" class="updated notice is-dismissable"><p>' . __('Published %d posts.', 'txtdomain') . '</p></div>', $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);


на картинке изображен процесс массового редактирования постов:

651123c47d355715410900.gif

куда Вы тут хотите встроить текстовое поле для массового редактирования?

слева от кнопки Apply можно встроить текстовое поле. я это делал на JS. создавал скрипт для админов на JS и подключал его на сайте через functions.php (Enqueue Scripts) . текстовое поле будет находиться внутри html-формы для массового редактирования с выбранным действием.

И можно его значение обработать в хуке-обработчике действия - выполнить функцию update_field() для Вашего поля ACF в редактируемом посте.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы