Чтобы дать админу возможность выбирать страницы, на которых будут отображаться поля ACF options, вам потребуется использовать функцию add_options_page() в WordPress.
Вот подробные шаги, которые вы можете выполнить:
Шаг 1: Создайте функцию, которая будет использоваться для добавления страницы настроек ACF options. Вы можете разместить эту функцию в файле functions.php вашей темы или в отдельном плагине.
function acf_options_page() { // Создаем страницу настроек для ACF options add_options_page( 'ACF Options', 'ACF Options', 'manage_options', 'acf-options', 'acf_options_page_callback' ); } add_action('admin_menu', 'acf_options_page');
Шаг 2: Создайте функцию обратного вызова, которая будет отображать форму настроек ACF options на странице, когда администратор будет входить в панель управления WordPress.
function acf_options_page_callback() { // Отображаем заголовок страницы echo '<h1>ACF Options</h1>'; // Выводим форму настроек echo '<form method="post" action="options.php">'; settings_fields('my-acf-options'); // использование секции настроек do_settings_sections('my-acf-options'); // использование полей настроек submit_button(); echo '</form>'; }
Шаг 3: Создайте функцию, которая будет регистрировать секцию и поля настроек ACF options.
function acf_options_settings() { // Регистрируем секцию add_settings_section( 'my-acf-options', 'ACF Options', 'acf_options_section_callback', 'my-acf-options' ); // Регистрируем поле выбора страниц для отображения add_settings_field( 'pages_to_display', 'Pages to Display', 'acf_pages_to_display_callback', 'my-acf-options', 'my-acf-options' ); // Регистрируем поля ACF options // ... // Включение полей в список настроек ACF options register_setting('my-acf-options', 'pages_to_display'); // ... } add_action('admin_init', 'acf_options_settings');
Шаг 4: Создайте функцию обратного вызова секции, которая будет отображать примечание или описание к настройкам ACF options.
function acf_options_section_callback() { echo '<p>Here you can configure ACF options.</p>'; }
Шаг 5: Создайте функцию обратного вызова поля выбора страниц для отображения. В этой функции вы можете использовать функцию wp_dropdown_pages() для отображения выпадающего списка всех страниц на сайте.
function acf_pages_to_display_callback() { $selected_pages = get_option('pages_to_display'); // Получаем все страницы на сайте $args = array( 'depth' => 0, 'show_date' => '', 'date_format' => get_option('date_format'), 'child_of' => 0, 'exclude' => '', 'include' => '', 'title_li' => '', 'echo' => 0, 'authors' => '', 'sort_column' => 'menu_order', 'link_before' => '', 'link_after' => '', 'walker' => '', 'post_type' => 'page', 'post_status' => 'publish' ); $pages = get_pages($args); // Выводим выпадающий список страниц echo '<select name="pages_to_display">'; echo '<option value="">Select Pages</option>'; foreach ($pages as $page) { if (is_array($selected_pages) && in_array($page->ID, $selected_pages)) { $selected = 'selected="selected"'; } else { $selected = ''; } echo '<option value="' . $page->ID . '" ' . $selected . '>' . get_the_title($page->ID) . '</option>'; } echo '</select>'; }
Теперь в панели администратора появится страница "ACF Options", на которой администратор сможет выбрать страницы, на которых будут отображаться поля ACF options.