ACF_Admin_UI_Options_Page::ajax_create_options_page
Creates a simple options page over AJAX.
Метод класса: ACF_Admin_UI_Options_Page{}
Хуков нет.
Возвращает
void. Ничего (null).
Использование
$ACF_Admin_UI_Options_Page = new ACF_Admin_UI_Options_Page(); $ACF_Admin_UI_Options_Page->ajax_create_options_page();
Список изменений
| С версии 6.2 | Введена. |
Код ACF_Admin_UI_Options_Page::ajax_create_options_page() ACF Admin UI Options Page::ajax create options page ACF 6.8.8
public function ajax_create_options_page() {
// Disable filters to ensure ACF loads raw data from DB.
acf_disable_filters();
// phpcs:disable WordPress.Security.NonceVerification.Missing
$args = acf_parse_args(
$_POST,
array(
'nonce' => '',
'post_id' => 0,
'acf_ui_options_page' => array(),
'field_group_title' => '',
'acf_parent_page_choices' => array(),
)
);
// phpcs:enable WordPress.Security.NonceVerification.Missing
// Verify nonce and user capability.
if ( ! wp_verify_nonce( $args['nonce'], 'acf_nonce' ) || ! acf_current_user_can_admin() || ! $args['post_id'] ) {
die();
}
// Process form data.
if ( ! empty( $args['acf_ui_options_page'] ) ) {
// Prepare for save.
$options_page = acf_validate_internal_post_type( $args['acf_ui_options_page'], 'acf-ui-options-page' );
$options_page['key'] = uniqid( 'ui_options_page_' );
$options_page['title'] = ! empty( $args['acf_ui_options_page']['page_title'] ) ? $args['acf_ui_options_page']['page_title'] : '';
$existing_options_pages = acf_get_options_pages();
// Check for duplicates.
if ( ! empty( $existing_options_pages ) ) {
foreach ( $existing_options_pages as $existing_options_page ) {
if ( $existing_options_page['menu_slug'] === $options_page['menu_slug'] ) {
wp_send_json_error(
array(
'error' => __( 'The provided Menu Slug already exists.', 'acf' ),
)
);
}
}
}
// Save the options page.
acf_update_internal_post_type( $options_page, 'acf-ui-options-page' );
wp_send_json_success(
array(
'page_title' => esc_html( $options_page['page_title'] ),
'menu_slug' => esc_attr( $options_page['menu_slug'] ),
)
);
}
// Render the form.
ob_start();
acf_get_view(
__DIR__ . '/../views/acf-ui-options-page/create-options-page-modal.php',
array(
'field_group_title' => $args['field_group_title'],
'acf_parent_page_choices' => $args['acf_parent_page_choices'],
)
);
$content = ob_get_clean();
wp_send_json_success(
array(
'content' => $content,
'title' => esc_html__( 'Add New Options Page', 'acf' ),
)
);
}