acf_options_page{}ACF 1.0

Хуки из класса

Использование

$acf_options_page = new acf_options_page();
// use class methods

Методы

  1. public __construct()
  2. public add_page( $page )
  3. public add_sub_page( $page )
  4. public get_page( $slug )
  5. public get_pages()
  6. public update_page( $slug = '', $data = array() )
  7. public validate_page( $page )

Код acf_options_page{} ACF 6.0.4

class acf_options_page {

	/** @var array Contains an array of options page settings */
	var $pages = array();


	/*
	*  __construct
	*
	*  Initialize filters, action, variables and includes
	*
	*  @type    function
	*  @date    23/06/12
	*  @since   5.0.0
	*
	*  @param   n/a
	*  @return  n/a
	*/

	function __construct() {

		/* do nothing */

	}

	/**
	 * Validates an Options Page settings array.
	 *
	 * @date    28/2/17
	 * @since   5.5.8
	 *
	 * @param   array|string $page The Options Page settings array or name.
	 * @return  array
	 */
	function validate_page( $page ) {

		// Allow empty arg to generate the default Options Page.
		if ( empty( $page ) ) {
			$page_title = __( 'Options', 'acf' );
			$page       = array(
				'page_title' => $page_title,
				'menu_title' => $page_title,
				'menu_slug'  => 'acf-options',
			);

			// Allow string to define Options Page name.
		} elseif ( is_string( $page ) ) {
			$page_title = $page;
			$page       = array(
				'page_title' => $page_title,
				'menu_title' => $page_title,
			);
		}

		// Apply defaults.
		$page = wp_parse_args(
			$page,
			array(
				'page_title'      => '',
				'menu_title'      => '',
				'menu_slug'       => '',
				'capability'      => 'edit_posts',
				'parent_slug'     => '',
				'position'        => null,
				'icon_url'        => false,
				'redirect'        => true,
				'post_id'         => 'options',
				'autoload'        => false,
				'update_button'   => __( 'Update', 'acf' ),
				'updated_message' => __( 'Options Updated', 'acf' ),
			)
		);

		// Allow compatibility for changed settings.
		$migrate = array(
			'title'  => 'page_title',
			'menu'   => 'menu_title',
			'slug'   => 'menu_slug',
			'parent' => 'parent_slug',
		);
		foreach ( $migrate as $old => $new ) {
			if ( ! empty( $page[ $old ] ) ) {
				$page[ $new ] = $page[ $old ];
			}
		}

		// If no menu_title is set, use the page_title value.
		if ( empty( $page['menu_title'] ) ) {
			$page['menu_title'] = $page['page_title'];
		}

		// If no menu_slug is set, generate one using the menu_title value.
		if ( empty( $page['menu_slug'] ) ) {
			$page['menu_slug'] = 'acf-options-' . sanitize_title( $page['menu_title'] );
		}

		// Standardize on position being either null or int.
		$page['position'] = is_numeric( $page['position'] ) ? (int) $page['position'] : null;

		/**
		 * Filters the $page array after it has been validated.
		 *
		 * @since   5.5.8
		 * @param   array $page The Options Page settings array.
		 */
		return apply_filters( 'acf/validate_options_page', $page );
	}


	/*
	*  add_page
	*
	*  This function will store an options page settings
	*
	*  @type    function
	*  @date    9/6/17
	*  @since   5.6.0
	*
	*  @param   $page (array)
	*  @return  n/a
	*/

	function add_page( $page ) {

		// validate
		$page = $this->validate_page( $page );
		$slug = $page['menu_slug'];

		// bail early if already exists
		if ( isset( $this->pages[ $slug ] ) ) {
			return false;
		}

		// append
		$this->pages[ $slug ] = $page;

		// return
		return $page;

	}


	/*
	*  add_sub_page
	*
	*  description
	*
	*  @type    function
	*  @date    9/6/17
	*  @since   5.6.0
	*
	*  @param   $post_id (int)
	*  @return  $post_id (int)
	*/

	function add_sub_page( $page ) {

		// validate
		$page = $this->validate_page( $page );

		// default parent
		if ( ! $page['parent_slug'] ) {
			$page['parent_slug'] = 'acf-options';
		}

		// create default parent if not yet exists
		if ( $page['parent_slug'] == 'acf-options' && ! $this->get_page( 'acf-options' ) ) {

			$this->add_page( '' );

		}

		// return
		return $this->add_page( $page );

	}


	/*
	*  update_page
	*
	*  This function will update an options page settings
	*
	*  @type    function
	*  @date    9/6/17
	*  @since   5.6.0
	*
	*  @param   $slug (string)
	*  @param   $data (array)
	*  @return  (array)
	*/

	function update_page( $slug = '', $data = array() ) {

		// vars
		$page = $this->get_page( $slug );

		// bail early if no page
		if ( ! $page ) {
			return false;
		}

		// loop
		$page = array_merge( $page, $data );

		// set
		$this->pages[ $slug ] = $page;

		// return
		return $page;

	}


	/*
	*  get_page
	*
	*  This function will return an options page settings
	*
	*  @type    function
	*  @date    6/07/2016
	*  @since   5.4.0
	*
	*  @param   $slug (string)
	*  @return  (mixed)
	*/

	function get_page( $slug ) {

		return isset( $this->pages[ $slug ] ) ? $this->pages[ $slug ] : null;

	}


	/*
	*  get_pages
	*
	*  This function will return all options page settings
	*
	*  @type    function
	*  @date    6/07/2016
	*  @since   5.4.0
	*
	*  @param   $slug (string)
	*  @return  (mixed)
	*/

	function get_pages() {

		return $this->pages;

	}

}