Home Plugin documentation Hooks and functions Functions have_component()
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;
}
Our home port
15 Rue Cavenne, 69007 Lyon
And from everywhere in the world thanks to Hangout and Skype !
Useful links