Home Plugin documentation Hooks and functions Functions have_component()

 

 

Here we go!

 

have_component()

Heads up!

This article contains PHP code and is intended for developers. We offer this code as a courtesy, but don’t provide support for code customizations or 3rd party development.

Component loop

/**
	* Initiate/end component loop
	*
	* @param      $selector
	* @param bool $post_id
	*
	* @return bool
	*/
function have_component( $selector, $post_id = false ) {

				// Component globals
				global $pip_component_i, $component_loop_setup, $component_values;

				// Store preview post ID
				$instance    = acf_get_instance( 'ACF_Local_Meta' );
				$previous_id = $instance->post_id;

				// Initiate loop
				if ( $pip_component_i === 0 ) {

								// Setup loop
								$values = get_sub_field( $selector, false );

								// Get values
								$component_values = $values ? $values : $component_values;

								// Fake wrapper field
								$field_key = 'field_component_wrapper_' . $selector;

								// Get sub fields
								$sub_fields = array();
								foreach ( $component_values as $key => $value ) {
												$sub_fields[] = array(
																'key'  => $key,
																'type' => 'text',
												);
								}

								// Create fake field
								acf_add_local_field(
												array(
																'key'        => $field_key,
																'type'       => 'group',
																'sub_fields' => $sub_fields,
												)
								);

								// Wrap values
								$values = array(
												$field_key => $values,
								);

								// If not already setup, setup meta
								if ( !$component_loop_setup ) {
												acf_setup_meta( $values, 'pip_component', true );
												$component_loop_setup = true;
								}

								// Continue loop
								return have_rows( $field_key );
				}

				// Reset meta and post ID
				acf_reset_meta( 'pip_component' );
				$instance->post_id = $previous_id;

				// Reset globals
				$pip_component_i      = 0;
				$component_loop_setup = false;

				// Stop loop
				return false;
}

You didn’t find the answer you were looking for?

or you think a specific topic deserve more informations?

 

Wave to bottom