acf()) return; // Check WP version $colspan = version_compare($GLOBALS['wp_version'], '5.5', '<') ? 3 : 4; ?>

Advanced Custom Fields PRO (minimum: 5.8).', 'acfe'); ?>

update_settings(); add_filter('acf/validate_field_group', array($this, 'field_group_location_list'), 20); add_filter('acf/validate_field', array($this, 'field_acfe_update'), 20); add_filter('acf/validate_field/type=group', array($this, 'field_seamless_style'), 20); add_filter('acf/validate_field/type=clone', array($this, 'field_seamless_style'), 20); add_filter('acf/validate_field/type=acfe_dynamic_message', array($this, 'field_dynamic_message'), 20); add_filter('acfe/load_fields/type=flexible_content', array($this, 'field_flexible_settings_title'), 20, 2); add_filter('acf/prepare_field/name=acfe_flexible_category', array($this, 'field_flexible_layout_categories'), 10, 2); } /** * ACF Extended: Settings */ function update_settings(){ // ACF Extended: 0.8.8 - 'acfe/modules/taxonomies' is now used for the old 'acfe/modules/dynamic_taxonomies' // ACF Extended: 0.8.6.3 - Renamed 'acfe/modules/taxonomies' to 'acfe/modules/ui' //if(acf_get_setting('acfe/modules/taxonomies') !== null){ // acf_update_setting('acfe/modules/ui', acf_get_setting('acfe/modules/taxonomies')); //} // ACF Extended: 0.8 - Renamed 'acfe_php*' to 'acfe/php*' if(acf_get_setting('acfe_php') !== null){ acf_update_setting('acfe/php', acf_get_setting('acfe_php')); } if(acf_get_setting('php_save') !== null){ acf_update_setting('acfe/php_save', acf_get_setting('php_save')); } if(acf_get_setting('php_load') !== null){ acf_update_setting('acfe/php_load', acf_get_setting('php_load')); } if(acf_get_setting('php_found') !== null){ acf_update_setting('acfe/php_found', acf_get_setting('php_found')); } // ACF Extended: 0.8.8 - renamed modules if(acf_get_setting('acfe/modules/dynamic_block_types') !== null){ acf_update_setting('acfe/modules/block_types', acf_get_setting('acfe/modules/dynamic_block_types')); } if(acf_get_setting('acfe/modules/dynamic_forms') !== null){ acf_update_setting('acfe/modules/forms', acf_get_setting('acfe/modules/dynamic_forms')); } if(acf_get_setting('acfe/modules/dynamic_options_pages') !== null){ acf_update_setting('acfe/modules/options_pages', acf_get_setting('acfe/modules/dynamic_options_pages')); } if(acf_get_setting('acfe/modules/dynamic_post_types') !== null){ acf_update_setting('acfe/modules/post_types', acf_get_setting('acfe/modules/dynamic_post_types')); } if(acf_get_setting('acfe/modules/dynamic_taxonomies') !== null){ acf_update_setting('acfe/modules/taxonomies', acf_get_setting('acfe/modules/dynamic_taxonomies')); } } /** * ACF Extended: 0.8 * Field Group Location: Archive renamed to List */ function field_group_location_list($field_group){ if(!acf_maybe_get($field_group, 'location')) return $field_group; foreach($field_group['location'] as &$or){ foreach($or as &$and){ if(!isset($and['value'])) continue; // Post Type List if($and['param'] === 'post_type' && acfe_ends_with($and['value'], '_archive')){ $and['param'] = 'post_type_list'; $and['value'] = substr_replace($and['value'], '', -8); } // Taxonomy List elseif($and['param'] === 'taxonomy' && acfe_ends_with($and['value'], '_archive')){ $and['param'] = 'taxonomy_list'; $and['value'] = substr_replace($and['value'], '', -8); } } } return $field_group; } /** * ACF Extended: 0.8 * Field Filter Value: Removed from this version */ function field_acfe_update($field){ if(!acf_maybe_get($field, 'acfe_update')) return $field; unset($field['acfe_update']); return $field; } /** * ACF Extended: 0.8.5 * Field Group/Clone: Fixed typo "Seamless" */ function field_seamless_style($field){ if($seamless = acf_maybe_get($field, 'acfe_seemless_style', false)){ $field['acfe_seamless_style'] = $seamless; } return $field; } /** * ACF Extended: 0.8.8.5 * Renamed Dynamic Message to Dynamic Render */ function field_dynamic_message($field){ $field['type'] = 'acfe_dynamic_render'; return $field; } /** * ACF Extended: 0.8.4.5 * Field Flexible Content: Fix duplicated "layout_settings" & "layout_title" */ function field_flexible_settings_title($fields, $parent){ // Check if is tool screen if(!acf_is_screen(acfe_get_acf_screen_id('acf-tools'))) return $fields; foreach($fields as $_k => $_field){ // field name $_field_name = acf_maybe_get($_field, 'name'); // check 'acfe_flexible_layout_title' & 'layout_settings' if($_field_name !== 'acfe_flexible_layout_title' && $_field_name !== 'layout_settings') continue; // unset unset($fields[$_k]); } return $fields; } /** * ACF Extended: 0.8.6.7 * Field Flexible Content: Compatibility for Layout Categories */ function field_flexible_layout_categories($field){ $value = acf_maybe_get($field, 'value'); if(empty($value)) return $field; if(is_string($value)){ $explode = explode('|', $value); $choices = array(); foreach($explode as $v){ $v = trim($v); $choices[$v] = $v; } $field['choices'] = $choices; $field['value'] = $choices; } return $field; } /** * ACF Extended: 0.8.5 * Module Dynamic Forms: Upgrade previous versions */ function acfe_form_import_compatibility($args, $name, $post_id){ // ACF Extended: 0.8.5 Compatibility - Step 1 // Groups upgrade $has_upgraded = false; $rules = array( // Post: title array( 'group' => 'field_acfe_form_post_save_post_title_group', 'sub_field' => 'field_acfe_form_post_save_post_title', 'sub_field_custom' => 'field_acfe_form_post_save_post_title_custom', ), // Post: name array( 'group' => 'field_acfe_form_post_save_post_name_group', 'sub_field' => 'field_acfe_form_post_save_post_name', 'sub_field_custom' => 'field_acfe_form_post_save_post_name_custom', ), // Term: name array( 'group' => 'field_acfe_form_term_save_name_group', 'sub_field' => 'field_acfe_form_term_save_name', 'sub_field_custom' => 'field_acfe_form_term_save_name_custom', ), // Term: slug array( 'group' => 'field_acfe_form_term_save_slug_group', 'sub_field' => 'field_acfe_form_term_save_slug', 'sub_field_custom' => 'field_acfe_form_term_save_slug_custom', ), // User: e-mail array( 'group' => 'field_acfe_form_user_save_email_group', 'sub_field' => 'field_acfe_form_user_save_email', 'sub_field_custom' => 'field_acfe_form_user_save_email_custom', ), // User: username array( 'group' => 'field_acfe_form_user_save_username_group', 'sub_field' => 'field_acfe_form_user_save_username', 'sub_field_custom' => 'field_acfe_form_user_save_username_custom', ), // User: password array( 'group' => 'field_acfe_form_user_save_password_group', 'sub_field' => 'field_acfe_form_user_save_password', 'sub_field_custom' => 'field_acfe_form_user_save_password_custom', ), // User: first name array( 'group' => 'field_acfe_form_user_save_first_name_group', 'sub_field' => 'field_acfe_form_user_save_first_name', 'sub_field_custom' => 'field_acfe_form_user_save_first_name_custom', ), // User: last name array( 'group' => 'field_acfe_form_user_save_last_name_group', 'sub_field' => 'field_acfe_form_user_save_last_name', 'sub_field_custom' => 'field_acfe_form_user_save_last_name_custom', ), // User: nickname array( 'group' => 'field_acfe_form_user_save_nickname_group', 'sub_field' => 'field_acfe_form_user_save_nickname', 'sub_field_custom' => 'field_acfe_form_user_save_nickname_custom', ), // User: display name array( 'group' => 'field_acfe_form_user_save_display_name_group', 'sub_field' => 'field_acfe_form_user_save_display_name', 'sub_field_custom' => 'field_acfe_form_user_save_display_name_custom', ), // User: website array( 'group' => 'field_acfe_form_user_save_website_group', 'sub_field' => 'field_acfe_form_user_save_website', 'sub_field_custom' => 'field_acfe_form_user_save_website_custom', ), ); foreach($args['acfe_form_actions'] as &$row){ foreach($rules as $rule){ if(!acf_maybe_get($row, $rule['group'])) continue; $value = null; $group = $row[$rule['group']]; if(acf_maybe_get($group, $rule['sub_field']) === 'custom'){ $value = acf_maybe_get($group, $rule['sub_field_custom']); }else{ $value = acf_maybe_get($group, $rule['sub_field']); } unset($row[$rule['group']]); $row[$rule['sub_field']] = $value; $has_upgraded = true; } } // ACF Extended: 0.8.5 Compatibility - Step 2 // Field mapping upgrade if($has_upgraded){ // Rules $rules = array( array( 'load_values' => 'field_acfe_form_post_load_values', 'fields' => array( 'field_acfe_form_post_map_post_type' => 'field_acfe_form_post_save_post_type', 'field_acfe_form_post_map_post_status' => 'field_acfe_form_post_save_post_status', 'field_acfe_form_post_map_post_title' => 'field_acfe_form_post_save_post_title', 'field_acfe_form_post_map_post_name' => 'field_acfe_form_post_save_post_name', 'field_acfe_form_post_map_post_content' => 'field_acfe_form_post_save_post_content', 'field_acfe_form_post_map_post_author' => 'field_acfe_form_post_save_post_author', 'field_acfe_form_post_map_post_parent' => 'field_acfe_form_post_save_post_parent', 'field_acfe_form_post_map_post_terms' => 'field_acfe_form_post_save_post_terms', ) ), array( 'load_values' => 'field_acfe_form_term_load_values', 'fields' => array( 'field_acfe_form_term_map_name' => 'field_acfe_form_term_save_name', 'field_acfe_form_term_map_slug' => 'field_acfe_form_term_save_slug', 'field_acfe_form_term_map_taxonomy' => 'field_acfe_form_term_save_taxonomy', 'field_acfe_form_term_map_parent' => 'field_acfe_form_term_save_parent', 'field_acfe_form_term_map_description' => 'field_acfe_form_term_save_description', ) ), array( 'load_values' => 'field_acfe_form_user_load_values', 'fields' => array( 'field_acfe_form_user_map_email' => 'field_acfe_form_user_save_email', 'field_acfe_form_user_map_username' => 'field_acfe_form_user_save_username', 'field_acfe_form_user_map_password' => 'field_acfe_form_user_save_password', 'field_acfe_form_user_map_first_name' => 'field_acfe_form_user_save_first_name', 'field_acfe_form_user_map_last_name' => 'field_acfe_form_user_save_last_name', 'field_acfe_form_user_map_nickname' => 'field_acfe_form_user_save_nickname', 'field_acfe_form_user_map_display_name' => 'field_acfe_form_user_save_display_name', 'field_acfe_form_user_map_website' => 'field_acfe_form_user_save_website', 'field_acfe_form_user_map_description' => 'field_acfe_form_user_save_description', 'field_acfe_form_user_map_role' => 'field_acfe_form_user_save_role', ) ), ); foreach($args['acfe_form_actions'] as &$row){ foreach($rules as $rule){ $load_values = acf_maybe_get($row, $rule['load_values']); $fields = $rule['fields']; if(!empty($load_values)) continue; foreach($fields as $map => $save){ $map_value = acf_maybe_get($row, $map); if(empty($map_value)) continue; if($save === 'field_acfe_form_post_save_post_content'){ $row['field_acfe_form_post_save_post_content_group'][$save] = $map_value; } elseif($save === 'field_acfe_form_term_save_description'){ $row['field_acfe_form_term_save_description_group'][$save] = $map_value; } elseif($save === 'field_acfe_form_user_save_description'){ $row['field_acfe_form_user_save_description_group'][$save] = $map_value; } else{ $row[$save] = $map_value; } } } } } return $args; } /** * Plugin: Post Types Order * https://wordpress.org/plugins/post-types-order/ * The plugin apply custom order to ACF Field Group Post Type. We have to fix this */ function pto_acf_field_group($ignore, $orderby, $query){ if(is_admin() && $query->is_main_query() && $query->get('post_type') === 'acf-field-group') $ignore = true; return $ignore; } /** * Plugin: Post Types Order * https://wordpress.org/plugins/post-types-order/ * The plugin apply a drag & drop UI on ACF Field Group UI. We have to fix this */ function pto_options_acf_field_group($options){ $options['show_reorder_interfaces']['acf-field-group'] = 'hide'; return $options; } /** * Plugin: Category Order and Taxonomy Terms Order * https://wordpress.org/plugins/taxonomy-terms-order/ * The plugin add a submenu to 'Custom Fields' to order Field Group Categories. It's unecessary */ function cotto_submenu(){ remove_submenu_page('edit.php?post_type=acf-field-group', 'to-interface-acf-field-group'); } /** * Plugin: Rank Math SEO * https://wordpress.org/plugins/seo-by-rank-math/ * Fix the plugin post metabox which is always above ACF metaboxes */ function rankmath_metaboxes_priority(){ return 'default'; } /** * Plugin: YOAST SEO * https://wordpress.org/plugins/wordpress-seo/ * Fix the plugin post metabox which is always above ACF metaboxes */ function yoast_metaboxes_priority(){ return 'default'; } /** * ACF Extended: 0.8.3 * Modules: Enable PolyLang Translation for ACFE Form Module * https://polylang.pro/doc/filter-reference/ */ function polylang($post_types, $is_settings){ if($is_settings){ unset($post_types['acfe-form']); unset($post_types['acfe-template']); }else{ $post_types['acfe-form'] = 'acfe-form'; $post_types['acfe-template'] = 'acfe-template'; } return $post_types; } /* * ACF Extended: 0.8.8 * Elementor Pro * Fix Elementor listing all private ACF Extended Field Groups in Dynamic ACF Tags options list */ function elementor(){ add_filter('acf/load_field_groups', function($field_groups){ // Hidden Local Field Groups $hidden = acfe_get_setting('reserved_field_groups', array()); foreach($field_groups as $i => $field_group){ if(!in_array($field_group['key'], $hidden)) continue; unset($field_groups[$i]); } $field_groups = array_values($field_groups); return $field_groups; }, 25); } /* * ACF Extended: 0.8.8.2 * WP GraphQL ACF Supported Fields */ function wpgraphql_supported_fields($fields){ $acfe_fields = array( 'acfe_advanced_link', 'acfe_code_editor', 'acfe_forms', 'acfe_hidden', 'acfe_post_statuses', 'acfe_post_types', 'acfe_slug', 'acfe_taxonomies', 'acfe_taxonomy_terms', 'acfe_user_roles', ); return array_merge($fields, $acfe_fields); } /* * ACF Extended: 0.8.8.4 * WP GraphQL ACF Register Field */ function wpgraphql_register_field($field_config, $type_name, $field_name, $config){ $acf_field = isset( $config['acf_field'] ) ? $config['acf_field'] : null; $acf_type = isset( $acf_field['type'] ) ? $acf_field['type'] : null; if($acf_type === 'acfe_advanced_link'){ $field_config['type'] = array('list_of' => 'String'); }elseif($acf_type === 'acfe_code_editor'){ $field_config['type'] = 'String'; }elseif($acf_type === 'acfe_forms'){ $field_config['type'] = array('list_of' => 'String'); }elseif($acf_type === 'acfe_hidden'){ $field_config['type'] = 'String'; }elseif($acf_type === 'acfe_post_statuses'){ $field_config['type'] = array('list_of' => 'String'); }elseif($acf_type === 'acfe_post_types'){ $field_config['type'] = array('list_of' => 'String'); }elseif($acf_type === 'acfe_slug'){ $field_config['type'] = 'String'; }elseif($acf_type === 'acfe_taxonomies'){ $field_config['type'] = array('list_of' => 'String'); }elseif($acf_type === 'acfe_taxonomy_terms'){ $field_config['type'] = array('list_of' => 'String'); }elseif($acf_type === 'acfe_user_roles'){ $field_config['type'] = array('list_of' => 'String'); } return $field_config; } } new acfe_compatibility(); endif;