web/wp-content/plugins/acf-extended/includes/compatibility.php (203 lines of code) (raw):
<?php
if(!defined('ABSPATH')){
exit;
}
if(!class_exists('acfe_compatibility')):
class acfe_compatibility{
/**
* construct
*/
function __construct(){
// global
add_action('acf/init', array($this, 'acf_init'), 98);
add_action('acfe/init', array($this, 'acfe_init'), 99);
// fields
add_filter('acf/validate_field_group', array($this, 'field_group_location_list'), 20);
add_filter('acf/validate_field_group', array($this, 'field_group_instruction_tooltip'), 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('acf/validate_field/type=acfe_column', array($this, 'field_column'), 20);
add_filter('acf/validate_field/type=image', array($this, 'field_image'), 20);
add_filter('acf/validate_field/type=file', array($this, 'field_image'), 20);
add_filter('acf/validate_field/type=acfe_forms', array($this, 'field_forms'), 20);
add_filter('acf/validate_field/type=acfe_code_editor', array($this, 'field_code_editor'), 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_init
*
* acf/init:98
*
* Rename modules
*
* @since 0.8 (20/10/2019)
*/
function acf_init(){
add_filter('admin_body_class', array($this, 'admin_body_class'));
// settings list
$settings = array(
'acfe_php' => 'acfe/php',
'php_save' => 'acfe/php_save',
'php_load' => 'acfe/php_load',
'php_found' => 'acfe/php_found',
'acfe/modules/dynamic_block_types' => 'acfe/modules/block_types',
'acfe/modules/dynamic_forms' => 'acfe/modules/forms',
'acfe/modules/dynamic_options_pages' => 'acfe/modules/options_pages',
'acfe/modules/dynamic_post_types' => 'acfe/modules/post_types',
'acfe/modules/dynamic_taxonomies' => 'acfe/modules/taxonomies',
);
// loop settings
foreach($settings as $old => $new){
// get old setting 'acfe_php'
$value = acf_get_setting($old);
if($value !== null){
// deprecated notice
acfe_deprecated_setting($old, '0.8', $new);
// update setting
acf_update_setting($new, $value);
}
}
}
/**
* admin_body_class
*
* Add class to admin body to fix acf postbox cog icon breaking line-height in WP 5.5
*
* @param $classes
*
* @return mixed|string
*/
function admin_body_class($classes){
if(!is_string($classes)){
return $classes;
}
$version = (float) get_bloginfo('version');
if(acf_version_compare($version, '>=', '6.5')){
$classes .= ' acfe-fix-postboxes';
}
return $classes;
}
/**
* acfe_init
*
* acfe/init:99
*
* @since 0.8.9.3 (03/2023)
*/
function acfe_init(){
// get old setting
$setting = acf_get_setting('acfe/modules/single_meta');
if($setting !== null){
// deprecated notice
acfe_deprecated_setting('acfe/modules/single_meta', '0.8.9.3', 'acfe/modules/performance');
// update setting
if($setting){
acf_update_setting('acfe/modules/performance', 'ultra');
}
}
}
/**
* field_group_location_list
*
* acf/validate_field_group:20
*
* Field Group Location: Archive renamed to List
*
* @since 0.8 (20/10/2019)
*/
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
// replace old 'my-post-type_archive'
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
// replace old 'my-taxonomy_archive'
}elseif($and['param'] === 'taxonomy' && acfe_ends_with($and['value'], '_archive')){
$and['param'] = 'taxonomy_list';
$and['value'] = substr_replace($and['value'], '', -8);
}
}
}
return $field_group;
}
/**
* field_group_instruction_tooltip
*
* Tooltip old parameter name compatibility
*
* @param $field_group
*
* @since 0.8.7.5 (11/12/2020)
*
* @return mixed
*/
function field_group_instruction_tooltip($field_group){
if(acf_maybe_get($field_group, 'instruction_placement') === 'acfe_instructions_tooltip'){
$field_group['instruction_placement'] = 'tooltip';
}
return $field_group;
}
/**
* field_acfe_update
*
* acf/validate_field:20
*
* Field Filter Value: Removed
*
* @since 0.8 (20/10/2019)
*/
function field_acfe_update($field){
if(isset($field['acfe_update'])){
unset($field['acfe_update']);
}
return $field;
}
/**
* field_seamless_style
*
* acf/validate_field/type=group:20
* acf/validate_field/type=clone:20
*
* Field Group/Clone: Fixed typo 'Seamless'
*
* @since 0.8.5 (15/03/2020)
*/
function field_seamless_style($field){
if($seamless = acf_maybe_get($field, 'acfe_seemless_style', false)){
$field['acfe_seamless_style'] = $seamless;
unset($field['acfe_seemless_style']);
}
return $field;
}
/**
* field_dynamic_message
*
* acf/validate_field/type=acfe_dynamic_message:20
*
* Renamed 'Dynamic Message' field to 'Dynamic Render'
*
* @since 0.8.8.5 (03/09/2021)
*/
function field_dynamic_message($field){
$field['type'] = 'acfe_dynamic_render';
return $field;
}
/**
* field_column
*
* acf/validate_field/type=acfe_column:20
*
* Changed columns to 12 grid instead of 6
*
* @since 0.8.7.3 (29/09/2020)
*/
function field_column($field){
if(acfe_ends_with($field['columns'], '/6')){
switch($field['columns']){
case '1/6': {
$field['columns'] = '2/12';
break;
}
case '2/6': {
$field['columns'] = '4/12';
break;
}
case '3/6': {
$field['columns'] = '6/12';
break;
}
case '4/6': {
$field['columns'] = '8/12';
break;
}
case '5/6': {
$field['columns'] = '10/12';
break;
}
case '6/6': {
$field['columns'] = '12/12';
break;
}
}
}
return $field;
}
/**
* field_image
*
* acf/validate_field/type=image:20
* acf/validate_field/type=file:20
*
* Renamed setting 'acfe_uploader' to 'uploader' for image & file
*
* @since 0.8.7.5 (11/12/2020)
*/
function field_image($field){
if(acf_maybe_get($field, 'acfe_uploader')){
$field['uploader'] = $field['acfe_uploader'];
unset($field['acfe_uploader']);
}
return $field;
}
/**
* field_forms
*
* acf/validate_field/type=forms:20
*
* 'forms' argument should return names and not id anymore
*
* @since 0.9 (07/02/2024)
*/
function field_forms($field){
if(!is_array($field['forms']) || empty($field['forms']) || !is_numeric($field['forms'][0])){
return $field;
}
// loop allowed forms
foreach(array_keys($field['forms']) as $k){
// value
$value = $field['forms'][ $k ];
// deprecated return form id
// we need to return form name
if(is_numeric($value)){
// get item
$item = acfe_get_module('form')->get_item($value);
// found item by ID
// return name
if($item){
$field['forms'][ $k ] = $item['name'];
// not found
// remove
}else{
unset($field['forms'][ $k ]);
}
}
}
return $field;
}
/**
* field_code_editor
*
* acf/validate_field/type=acfe_code_editor:20
*
* Renamed 'return_entities' to 'return_format' for code editor
*
* @since 0.8.9.1
*
* @param $field
*/
function field_code_editor($field){
if(acf_maybe_get($field, 'return_entities')){
if(!in_array('htmlentities', $field['return_format'])){
$field['return_format'][] = 'htmlentities';
}
unset($field['return_entities']);
}
return $field;
}
/**
* field_flexible_settings_title
*
* acfe/load_fields/type=flexible_content:20
*
* Field Flexible Content: Fix duplicated "layout_settings" & "layout_title"
*
* @since 0.8.4.5 (11/02/2020)
*/
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;
}
/**
* field_flexible_layout_categories
*
* acf/prepare_field/name=acfe_flexible_category
*
* Field Flexible Content: Compatibility for Layout Categories
*
* @since 0.8.6.7 (16/07/2020)
*/
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;
}
}
new acfe_compatibility();
endif;