acf_loop{}ACF 1.0

Хуков нет.

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

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

Методы

  1. public __construct()
  2. public add_loop( $loop = array() )
  3. public get_i( $i = 0 )
  4. public get_loop( $i = 'active', $key = null )
  5. public is_empty()
  6. public is_loop( $i = 0 )
  7. public remove_loop( $i = 'active' )
  8. public update_loop( $i = 'active', $key = null, $value = null )

Код acf_loop{} ACF 6.0.4

class acf_loop {


	/*
	*  __construct
	*
	*  This function will setup the class functionality
	*
	*  @type    function
	*  @date    5/03/2014
	*  @since   5.0.0
	*
	*  @param   n/a
	*  @return  n/a
	*/

	function __construct() {

		// vars
		$this->loops = array();

	}


	/*
	*  is_empty
	*
	*  This function will return true if no loops exist
	*
	*  @type    function
	*  @date    3/03/2016
	*  @since   5.3.2
	*
	*  @param   n/a
	*  @return  (boolean)
	*/

	function is_empty() {

		return empty( $this->loops );

	}


	/*
	*  is_loop
	*
	*  This function will return true if a loop exists for the given array index
	*
	*  @type    function
	*  @date    3/03/2016
	*  @since   5.3.2
	*
	*  @param   $i (int)
	*  @return  (boolean)
	*/

	function is_loop( $i = 0 ) {

		return isset( $this->loops[ $i ] );

	}


	/*
	*  get_i
	*
	*  This function will return a valid array index for the given $i
	*
	*  @type    function
	*  @date    3/03/2016
	*  @since   5.3.2
	*
	*  @param   $i (mixed)
	*  @return  (int)
	*/

	function get_i( $i = 0 ) {

		// 'active'
		if ( $i === 'active' ) {
			$i = -1;
		}

		// 'previous'
		if ( $i === 'previous' ) {
			$i = -2;
		}

		// allow negative to look at end of loops
		if ( $i < 0 ) {

			$i = count( $this->loops ) + $i;

		}

		// return
		return $i;

	}


	/*
	*  add_loop
	*
	*  This function will add a new loop
	*
	*  @type    function
	*  @date    3/03/2016
	*  @since   5.3.2
	*
	*  @param   $loop (array)
	*  @return  n/a
	*/

	function add_loop( $loop = array() ) {

		// defaults
		$loop = wp_parse_args(
			$loop,
			array(
				'selector' => '',
				'name'     => '',
				'value'    => false,
				'field'    => false,
				'i'        => -1,
				'post_id'  => 0,
				'key'      => '',
			)
		);

		// ensure array
		$loop['value'] = acf_get_array( $loop['value'] );

		// Re-index values if this loop starts from index 0.
		// This allows ajax previews to work ($_POST data contains random unique array keys)
		if ( $loop['i'] == -1 ) {

			$loop['value'] = array_values( $loop['value'] );

		}

		// append
		$this->loops[] = $loop;

		// return
		return $loop;

	}


	/*
	*  update_loop
	*
	*  This function will update a loop's setting
	*
	*  @type    function
	*  @date    3/03/2016
	*  @since   5.3.2
	*
	*  @param   $i (mixed)
	*  @param   $key (string) the loop setting name
	*  @param   $value (mixed) the loop setting value
	*  @return  (boolean) true on success
	*/

	function update_loop( $i = 'active', $key = null, $value = null ) {

		// i
		$i = $this->get_i( $i );

		// bail early if no set
		if ( ! $this->is_loop( $i ) ) {
			return false;
		}

		// set
		$this->loops[ $i ][ $key ] = $value;

		// return
		return true;

	}


	/*
	*  get_loop
	*
	*  This function will return a loop, or loop's setting for a given index & key
	*
	*  @type    function
	*  @date    3/03/2016
	*  @since   5.3.2
	*
	*  @param   $i (mixed)
	*  @param   $key (string) the loop setting name
	*  @return  (mixed) false on failure
	*/

	function get_loop( $i = 'active', $key = null ) {

		// i
		$i = $this->get_i( $i );

		// bail early if no set
		if ( ! $this->is_loop( $i ) ) {
			return false;
		}

		// check for key
		if ( $key !== null ) {

			return $this->loops[ $i ][ $key ];

		}

		// return
		return $this->loops[ $i ];

	}


	/*
	*  remove_loop
	*
	*  This function will remove a loop
	*
	*  @type    function
	*  @date    3/03/2016
	*  @since   5.3.2
	*
	*  @param   $i (mixed)
	*  @return  (boolean) true on success
	*/

	function remove_loop( $i = 'active' ) {

		// i
		$i = $this->get_i( $i );

		// bail early if no set
		if ( ! $this->is_loop( $i ) ) {
			return false;
		}

		// remove
		unset( $this->loops[ $i ] );

		// reset keys
		$this->loops = array_values( $this->loops );

		// PHP 7.2 no longer resets array keys for empty value
		if ( $this->is_empty() ) {
			$this->loops = array();
		}
	}

}