get_layout($value[ $i ]['acf_fc_layout'], $field); // get legacy ACFE title $_acfe_flexible_layout_title = acf_get_metadata($post_id, $field['name'] . '_' . $i . '_acfe_flexible_layout_title'); // check legacy ACFE inline title is different from layout label // inline title always saved the title, event when default if($_acfe_flexible_layout_title !== $layout['label']){ //acf_log('backcompat: assign title', $value[ $i ]['acf_fc_layout'], $_acfe_flexible_layout_title); $value[ $i ]['_acfe_flexible_layout_title'] = $_acfe_flexible_layout_title; } } // assign legacy ACFE toggle value // this later used in get_layout_disabled() to fallback to this value if(in_array('toggle', $field['acfe_flexible_add_actions'])){ //acf_log('backcompat: assign toggle', $value[ $i ]['acf_fc_layout'], true); $value[ $i ]['_acfe_flexible_toggle'] = acf_get_metadata($post_id, $field['name'] . '_' . $i . '_acfe_flexible_toggle'); } } return $value; } /** * load_value_compat_toggle * * acf/load_value/type=flexible_content * * @param $value * @param $post_id * @param $field * * @return array|mixed */ function load_value_compat_toggle($value, $post_id, $field){ // pre-ACF 6.5+: bail early if(!acfe_is_acf_65()){ return $value; } // bail early in admin if(is_admin() && !wp_doing_ajax()){ return $value; } // check value if(empty($value)){ return $value; } // check layouts if(empty($field['layouts'])){ return $value; } // bail early in preview if(acf_maybe_get_POST('action') === 'acfe/flexible/layout_preview'){ return $value; } // check setting if(!in_array('toggle', $field['acfe_flexible_add_actions'])){ return $value; } // vars $value = acf_get_array($value); // loop value foreach($value as $k => $row){ // check toggle if(empty($row['_acfe_flexible_toggle'])){ continue; } // vars $layout = $this->get_layout($row['acf_fc_layout'], $field); $name = $field['_name']; $key = $field['key']; $l_name = $layout['name']; // filters $hide = true; $hide = apply_filters("acfe/flexible/toggle_hide", $hide, $row, $layout, $field); $hide = apply_filters("acfe/flexible/toggle_hide/name={$name}", $hide, $row, $layout, $field); $hide = apply_filters("acfe/flexible/toggle_hide/key={$key}", $hide, $row, $layout, $field); $hide = apply_filters("acfe/flexible/toggle_hide/layout={$l_name}", $hide, $row, $layout, $field); $hide = apply_filters("acfe/flexible/toggle_hide/name={$name}&layout={$l_name}", $hide, $row, $layout, $field); $hide = apply_filters("acfe/flexible/toggle_hide/key={$key}&layout={$l_name}", $hide, $row, $layout, $field); // should hide if($hide){ unset($value[ $k ]); } } // reorder keys $value = array_values($value); // return value return $value; } /** * get_layout * * @param $layout_name * @param $field * * @return mixed */ function get_layout($layout_name, $field){ return acf_get_field_type('flexible_content')->get_layout($layout_name, $field); } /** * get_layout_meta * * Proxy to ACF get_layout_meta method * * @param $field * @param $post_id * * @return mixed */ function get_layout_meta($field, $post_id = false){ $post_id = $post_id === false ? acf_get_field_type('flexible_content')->post_id : $post_id; return acf_get_field_type('flexible_content')->get_layout_meta($post_id, $field); } /** * has_layout_meta * * @param $field * @param $post_id * * @return bool */ function has_layout_meta($field, $post_id = false){ $layout_meta = $this->get_layout_meta($field, $post_id); return !empty($layout_meta); } } acf_new_instance('acfe_compatibility_acf_65'); endif;