acf_loop{}ACF 1.0AllowDynamicProperties

Хуков нет.

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

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

Методы

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

Код acf_loop{} ACF 6.4.2

class acf_loop {


	/**
	 * 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();
	}


	/**
	 * 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 );
	}


	/**
	 * 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 ] );
	}


	/**
	 * 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;
	}


	/**
	 * 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;
	}


	/**
	 * 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;
	}


	/**
	 * 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 ];
	}


	/**
	 * 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();
		}
	}
}