ACF_Admin_UI_Options_Page::ajax_create_options_pagepublicACF 6.2

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 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' ),
		)
	);
}