This commit is contained in:
Toby Inkster 2022-01-17 20:45:04 +00:00
parent b66e34f42f
commit e18782a91e
26 changed files with 4524 additions and 11986 deletions

View File

@ -3,7 +3,7 @@
Plugin Name: Advanced Custom Fields PRO Plugin Name: Advanced Custom Fields PRO
Plugin URI: https://www.advancedcustomfields.com Plugin URI: https://www.advancedcustomfields.com
Description: Customize WordPress with powerful, professional and intuitive fields. Description: Customize WordPress with powerful, professional and intuitive fields.
Version: 5.11.1 Version: 5.11.4
Author: Delicious Brains Author: Delicious Brains
Author URI: https://www.advancedcustomfields.com Author URI: https://www.advancedcustomfields.com
Text Domain: acf Text Domain: acf
@ -19,7 +19,7 @@ if ( ! class_exists( 'ACF' ) ) :
class ACF { class ACF {
/** @var string The plugin version number. */ /** @var string The plugin version number. */
var $version = '5.11.1'; var $version = '5.11.4';
/** @var array The plugin settings array. */ /** @var array The plugin settings array. */
var $settings = array(); var $settings = array();

View File

@ -650,6 +650,9 @@ html[dir=rtl] .select2-container.-acf .select2-choice .select2-arrow {
.select2-container.-acf li { .select2-container.-acf li {
margin-bottom: 0; margin-bottom: 0;
} }
.select2-container.-acf[data-select2-id^=select2-data] .select2-selection--multiple {
overflow: hidden;
}
.select2-container.-acf .select2-selection { .select2-container.-acf .select2-selection {
border-color: #7e8993; border-color: #7e8993;
} }
@ -665,6 +668,14 @@ html[dir=rtl] .select2-container.-acf .select2-choice .select2-arrow {
.select2-container.-acf .select2-selection--multiple .select2-selection__rendered { .select2-container.-acf .select2-selection--multiple .select2-selection__rendered {
padding-right: 0; padding-right: 0;
} }
.select2-container.-acf .select2-selection--multiple .select2-selection__rendered[id^=select2-acf-field] {
display: inline;
padding: 0;
margin: 0;
}
.select2-container.-acf .select2-selection--multiple .select2-selection__rendered[id^=select2-acf-field] .select2-selection__choice {
margin-right: 0;
}
.select2-container.-acf .select2-selection--multiple .select2-selection__choice { .select2-container.-acf .select2-selection--multiple .select2-selection__choice {
background-color: #f7f7f7; background-color: #f7f7f7;
border-color: #cccccc; border-color: #cccccc;
@ -682,6 +693,11 @@ html[dir=rtl] .select2-container.-acf .select2-choice .select2-arrow {
.select2-container.-acf .select2-selection--multiple .select2-selection__choice.ui-sortable-helper span { .select2-container.-acf .select2-selection--multiple .select2-selection__choice.ui-sortable-helper span {
visibility: hidden; visibility: hidden;
} }
.select2-container.-acf .select2-selection--multiple .select2-selection__choice .select2-selection__choice__remove {
position: static;
border-right: none;
padding: 0;
}
.select2-container.-acf .select2-selection--multiple .select2-selection__choice.ui-sortable-placeholder { .select2-container.-acf .select2-selection--multiple .select2-selection__choice.ui-sortable-placeholder {
background-color: #f7f7f7; background-color: #f7f7f7;
border-color: #f7f7f7; border-color: #f7f7f7;
@ -698,6 +714,10 @@ html[dir=rtl] .select2-container.-acf .select2-choice .select2-arrow {
white-space: normal; white-space: normal;
} }
.select2-dropdown .select2-results__option {
margin-bottom: 0;
}
.select2-container .select2-dropdown { .select2-container .select2-dropdown {
z-index: 900000; z-index: 900000;
} }

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -4722,10 +4722,10 @@
return data; return data;
} }
const $query_nonce = $(`#acf-${field.get('key')}-query-nonce`); const query_nonce = field.get('queryNonce');
if ($query_nonce.length) { if (query_nonce && query_nonce.length) {
data.user_query_nonce = $query_nonce.val(); data.user_query_nonce = query_nonce;
} }
return data; return data;
@ -7782,7 +7782,7 @@
if ($(this).data('data')) { if ($(this).data('data')) {
var $option = $($(this).data('data').element); var $option = $($(this).data('data').element);
} else { } else {
var $option = $($(this).children('span.acf-selection').data('element')); var $option = $($(this).find('span.acf-selection').data('element'));
} // detach and re-append to end } // detach and re-append to end
@ -7796,9 +7796,13 @@
$select.on('select2:select', this.proxy(function (e) { $select.on('select2:select', this.proxy(function (e) {
this.getOption(e.params.data.id).detach().appendTo(this.$el); this.getOption(e.params.data.id).detach().appendTo(this.$el);
})); }));
} // add class } // add handler to auto-focus searchbox (for jQuery 3.6)
$select.on('select2:open', () => {
$('.select2-container--open .select2-search__field').get(-1).focus();
}); // add class
$container.addClass('-acf'); // Add back temporarily removed attr. $container.addClass('-acf'); // Add back temporarily removed attr.
if (attrAjax !== undefined) { if (attrAjax !== undefined) {
@ -7999,7 +8003,10 @@
var params = { var params = {
term: term, term: term,
page: page page: page
}; // return }; // filter
var field = this.get('field');
params = acf.applyFilters('select2_ajax_data', params, this.data, this.$el, field || false, this); // return
return Select2.prototype.getAjaxData.apply(this, [params]); return Select2.prototype.getAjaxData.apply(this, [params]);
} }

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -65,7 +65,9 @@
*/ */
function doAction() { function
/* action, arg1, arg2, ... */
doAction() {
var args = Array.prototype.slice.call(arguments); var args = Array.prototype.slice.call(arguments);
var action = args.shift(); var action = args.shift();
@ -115,7 +117,9 @@
*/ */
function applyFilters() { function
/* filter, filtered arg, arg2, ... */
applyFilters() {
var args = Array.prototype.slice.call(arguments); var args = Array.prototype.slice.call(arguments);
var filter = args.shift(); var filter = args.shift();

File diff suppressed because one or more lines are too long

View File

@ -1000,7 +1000,8 @@ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { va
$el $el
} = this.state; // Callback for updating block data. } = this.state; // Callback for updating block data.
function serializeData(silent = false) { function serializeData() {
let silent = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;
const data = acf.serialize($el, `acf-${attributes.id}`); const data = acf.serialize($el, `acf-${attributes.id}`);
if (silent) { if (silent) {
@ -1050,7 +1051,8 @@ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { va
} }
fetch(args = {}) { fetch() {
let args = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
const { const {
attributes = this.props.attributes, attributes = this.props.attributes,
delay = 0 delay = 0

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -76,9 +76,10 @@ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { va
*/ */
function isNewBlock({ function isNewBlock(_ref) {
attributes let {
}) { attributes
} = _ref;
return !attributes.id; return !attributes.id;
} }
/** /**
@ -93,10 +94,11 @@ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { va
*/ */
function isDuplicateBlock({ function isDuplicateBlock(_ref2) {
attributes, let {
clientId attributes,
}) { clientId
} = _ref2;
return getBlocks().filter(block => block.attributes.id === attributes.id).filter(block => block.clientId !== clientId).length; return getBlocks().filter(block => block.attributes.id === attributes.id).filter(block => block.clientId !== clientId).length;
} }
/** /**
@ -138,9 +140,12 @@ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { va
} // Check category exists and fallback to "common". } // Check category exists and fallback to "common".
const category = wp.blocks.getCategories().filter(({ const category = wp.blocks.getCategories().filter(_ref3 => {
slug let {
}) => slug === blockType.category).pop(); slug
} = _ref3;
return slug === blockType.category;
}).pop();
if (!category) { if (!category) {
//console.warn( `The block "${blockType.name}" is registered with an unknown category "${blockType.category}".` ); //console.warn( `The block "${blockType.name}" is registered with an unknown category "${blockType.category}".` );
@ -271,9 +276,12 @@ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { va
for (const k in args) { for (const k in args) {
blocks = blocks.filter(({ blocks = blocks.filter(_ref4 => {
attributes let {
}) => attributes[k] === args[k]); attributes
} = _ref4;
return attributes[k] === args[k];
});
} // Return results. } // Return results.
@ -385,10 +393,11 @@ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { va
const nodeAttrs = {}; const nodeAttrs = {};
acf.arrayArgs(node.attributes).map(parseNodeAttr).forEach(({ acf.arrayArgs(node.attributes).map(parseNodeAttr).forEach(_ref5 => {
name, let {
value name,
}) => { value
} = _ref5;
nodeAttrs[name] = value; nodeAttrs[name] = value;
}); // Define args for React.createElement(). }); // Define args for React.createElement().
@ -861,11 +870,14 @@ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { va
}, (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_1__.createElement)(Placeholder, null, (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_1__.createElement)(Spinner, null))); }, (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_1__.createElement)(Placeholder, null, (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_1__.createElement)(Spinner, null)));
} }
shouldComponentUpdate({ shouldComponentUpdate(_ref6, _ref7) {
index let {
}, { index
html } = _ref6;
}) { let {
html
} = _ref7;
if (index !== this.props.index) { if (index !== this.props.index) {
this.componentWillMove(); this.componentWillMove();
} }
@ -963,9 +975,10 @@ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { va
class BlockForm extends DynamicHTML { class BlockForm extends DynamicHTML {
setup({ setup(_ref8) {
attributes let {
}) { attributes
} = _ref8;
this.id = `BlockForm-${attributes.id}`; this.id = `BlockForm-${attributes.id}`;
} }
@ -987,9 +1000,10 @@ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { va
query: { query: {
form: true form: true
} }
}).done(({ }).done(_ref9 => {
data let {
}) => { data
} = _ref9;
this.setHtml(data.form); this.setHtml(data.form);
}); });
} }
@ -1006,7 +1020,8 @@ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { va
$el $el
} = this.state; // Callback for updating block data. } = this.state; // Callback for updating block data.
function serializeData(silent = false) { function serializeData() {
let silent = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;
const data = acf.serialize($el, `acf-${attributes.id}`); //console.log('serializeData', props, data); const data = acf.serialize($el, `acf-${attributes.id}`); //console.log('serializeData', props, data);
if (silent) { if (silent) {
@ -1046,10 +1061,11 @@ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { va
class BlockPreview extends DynamicHTML { class BlockPreview extends DynamicHTML {
setup({ setup(_ref10) {
attributes, let {
name attributes,
}) { name
} = _ref10;
this.id = `BlockPreview-${attributes.id}`; this.id = `BlockPreview-${attributes.id}`;
const blockType = getBlockType(name); const blockType = getBlockType(name);
@ -1059,7 +1075,8 @@ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { va
} }
fetch(args = {}) { fetch() {
let args = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
const { const {
attributes = this.props.attributes, attributes = this.props.attributes,
delay = 0 delay = 0
@ -1082,9 +1099,10 @@ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { va
preview: true preview: true
}, },
delay delay
}).done(({ }).done(_ref11 => {
data let {
}) => { data
} = _ref11;
this.setHtml(data.preview); this.setHtml(data.preview);
}); });
} }

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -367,8 +367,6 @@ function acf_idify( $str = '' ) {
} }
/** /**
* acf_slugify
*
* Returns a slug friendly string. * Returns a slug friendly string.
* *
* @date 24/12/17 * @date 24/12/17
@ -379,7 +377,20 @@ function acf_idify( $str = '' ) {
* @return string * @return string
*/ */
function acf_slugify( $str = '', $glue = '-' ) { function acf_slugify( $str = '', $glue = '-' ) {
return str_replace( array( '_', '-', '/', ' ' ), $glue, strtolower( $str ) ); $raw = $str;
$slug = str_replace( array( '_', '-', '/', ' ' ), $glue, strtolower( remove_accents( $raw ) ) );
$slug = preg_replace( "/[^A-Za-z0-9" . preg_quote( $glue ) . "]/", '', $slug );
/**
* Filters the slug created by acf_slugify().
*
* @since 5.11.4
*
* @param string $slug The newly created slug.
* @param string $raw The original string.
* @param string $glue The separator used to join the string into a slug.
*/
return apply_filters( 'acf/slugify', $slug, $raw, $glue );
} }
/** /**

View File

@ -60,57 +60,29 @@ function acf_get_value( $post_id, $field ) {
// Get field name. // Get field name.
$field_name = $field['name']; $field_name = $field['name'];
// If we still don't have a proper field array, the field doesn't exist currently.
if ( empty( $field['type'] ) && empty( $field['key'] ) ) {
// Get field ID & type.
$decoded = acf_decode_post_id( $post_id );
if ( apply_filters( 'acf/prevent_access_to_unknown_fields', false ) || ( 'option' === $decoded['type'] && 'options' !== $decoded['id'] ) ) {
return null;
}
do_action( 'acf/get_invalid_field_value', $field, __FUNCTION__ );
}
// Check store. // Check store.
$store = acf_get_store( 'values' ); $store = acf_get_store( 'values' );
if ( $store->has( "$post_id:$field_name" ) ) { if ( $store->has( "$post_id:$field_name" ) ) {
return $store->get( "$post_id:$field_name" ); return $store->get( "$post_id:$field_name" );
} }
/**
* If we still don't have a field, try a last-ditch effort to get it by name.
* We don't do this by default in `get_field()`, which uses "strict" mode internally
* to protect against multiple fields with same name.
*/
$strict = true;
$_field = $field;
if ( empty( $field['type'] ) && empty( $field['key'] ) ) {
$field = acf_get_field( $field_name );
$strict = false;
}
// At least we tried.
if ( ! $field ) {
// If ACF was initialized before init, show a notice and log the error unless told otherwise.
if ( ! did_action( 'init' ) && apply_filters( 'acf/admin/show_early_init_notice', true ) ) {
$error_text = sprintf(
__( '<strong>%1$s</strong> - We\'ve detected one or more calls to retrieve ACF field values before ACF has been initialized, resulting in missing data. <a href="%2$s" target="_blank">Learn how to fix this</a>.', 'acf'),
acf_get_setting( 'name' ),
'https://www.advancedcustomfields.com/resources/acf-field-functions/'
);
_doing_it_wrong( __FUNCTION__, $error_text, '5.11.1' );
set_site_transient( 'acf_early_init_notice', $error_text );
}
/**
* Filters the $value after it has been loaded.
*
* @date 28/09/13
* @since 5.0.0
*
* @param mixed $value The value to preview.
* @param string $post_id The post ID for this value.
* @param array $field The field array.
*/
return apply_filters( 'acf/load_value', null, $post_id, $_field );
}
// Load value from database. // Load value from database.
$value = acf_get_metadata( $post_id, $field_name ); $value = acf_get_metadata( $post_id, $field_name );
// Use field's default_value if no meta was found. // Use field's default_value if no meta was found.
if ( $value === null && isset( $field['default_value'] ) && $strict ) { if ( $value === null && isset( $field['default_value'] ) ) {
$value = $field['default_value']; $value = $field['default_value'];
} }
@ -362,3 +334,26 @@ function acf_preview_value( $value, $post_id, $field ) {
// Register variation. // Register variation.
acf_add_filter_variations( 'acf/preview_value', array( 'type', 'name', 'key' ), 2 ); acf_add_filter_variations( 'acf/preview_value', array( 'type', 'name', 'key' ), 2 );
/**
* Potentially log an error if a field doesn't exist when we expect it to.
*
* @param array $field An array representing the field that a value was requested for.
* @param string $function The function that noticed the problem.
*
* @return void
*/
function acf_log_invalid_field_notice( $field, $function ) {
// If "init" has fired, ACF probably wasn't initialized early.
if ( did_action( 'init' ) ) {
return;
}
$error_text = sprintf(
__( '<strong>%1$s</strong> - We\'ve detected one or more calls to retrieve ACF field values before ACF has been initialized. This is not supported and can result in malformed or missing data. <a href="%2$s" target="_blank">Learn how to fix this</a>.', 'acf' ),
acf_get_setting( 'name' ),
'https://www.advancedcustomfields.com/resources/acf-field-functions/'
);
_doing_it_wrong( $function, $error_text, '5.11.1' );
}
add_action( 'acf/get_invalid_field_value', 'acf_log_invalid_field_notice', 10, 2 );

View File

@ -178,6 +178,7 @@ function acf_decode_post_id( $post_id = 0 ) {
$id = absint( $id ); $id = absint( $id );
break; break;
case 'block_%s': case 'block_%s':
case 'block_%d':
$type = 'block'; $type = 'block';
$id = $post_id; $id = $post_id;
break; break;

View File

@ -23,7 +23,6 @@ if ( ! class_exists( 'ACF_Admin' ) ) :
add_action( 'admin_enqueue_scripts', array( $this, 'admin_enqueue_scripts' ) ); add_action( 'admin_enqueue_scripts', array( $this, 'admin_enqueue_scripts' ) );
add_action( 'admin_body_class', array( $this, 'admin_body_class' ) ); add_action( 'admin_body_class', array( $this, 'admin_body_class' ) );
add_action( 'current_screen', array( $this, 'current_screen' ) ); add_action( 'current_screen', array( $this, 'current_screen' ) );
add_action( 'admin_init', array( $this, 'maybe_show_early_init_notice' ) );
} }
/** /**
@ -202,26 +201,6 @@ if ( ! class_exists( 'ACF_Admin' ) ) :
return preg_replace( '/(<a[\S\s]+?\/a>)/', '$1 ' . __( 'and', 'acf' ) . ' <a href="https://www.advancedcustomfields.com" target="_blank">ACF</a>', $text, 1 ); return preg_replace( '/(<a[\S\s]+?\/a>)/', '$1 ' . __( 'and', 'acf' ) . ' <a href="https://www.advancedcustomfields.com" target="_blank">ACF</a>', $text, 1 );
} }
/**
* Displays the notice that can be shown when calling `get_field()`, etc. before `acf/init`.
*
* @since 5.11.1
*
* @return void
*/
function maybe_show_early_init_notice() {
if ( ! acf_get_setting( 'show_admin' ) || ! acf_current_user_can_admin() ) {
return;
}
$notice = get_site_transient( 'acf_early_init_notice' );
if ( ! $notice ) {
return;
}
acf_add_admin_notice( (string) $notice, 'warning', false );
delete_site_transient( 'acf_early_init_notice' );
}
} }
// Instantiate. // Instantiate.

View File

@ -57,7 +57,7 @@ if ( ! class_exists( 'ACF_Ajax_Check_Screen' ) ) :
'key' => $field_group['key'], 'key' => $field_group['key'],
'title' => $field_group['title'], 'title' => $field_group['title'],
'position' => $field_group['position'], 'position' => $field_group['position'],
'classes' => postbox_classes( $item['id'], $args['screen'] ), 'classes' => postbox_classes( 'acf-' . $field_group['key'], $args['screen'] ),
'style' => $field_group['style'], 'style' => $field_group['style'],
'label' => $field_group['label_placement'], 'label' => $field_group['label_placement'],
'edit' => acf_get_field_group_edit_link( $field_group['ID'] ), 'edit' => acf_get_field_group_edit_link( $field_group['ID'] ),

View File

@ -859,7 +859,8 @@ function get_row_layout() {
*/ */
function acf_shortcode( $atts ) { function acf_shortcode( $atts ) {
// Mitigate issue where some AJAX requests can return ACF field data. // Mitigate issue where some AJAX requests can return ACF field data.
if ( wp_doing_ajax() && ! current_user_can( 'edit_posts' ) ) { $capability = apply_filters( 'acf/ajax/shortcode_capability', 'edit_posts' );
if ( wp_doing_ajax() && ( $capability !== false ) && ! current_user_can( $capability ) ) {
return; return;
} }
@ -873,9 +874,21 @@ function acf_shortcode( $atts ) {
'acf' 'acf'
); );
// get value and return it $access_already_prevented = apply_filters( 'acf/prevent_access_to_unknown_fields', false );
$filter_applied = false;
if ( ! $access_already_prevented ) {
$filter_applied = true;
add_filter( 'acf/prevent_access_to_unknown_fields', '__return_true' );
}
// Try to get the field value.
$value = get_field( $atts['field'], $atts['post_id'], $atts['format_value'] ); $value = get_field( $atts['field'], $atts['post_id'], $atts['format_value'] );
if ( $filter_applied ) {
remove_filter( 'acf/prevent_access_to_unknown_fields', '__return_true' );
}
if ( is_array( $value ) ) { if ( is_array( $value ) ) {
$value = @implode( ', ', $value ); $value = @implode( ', ', $value );
} }

View File

@ -57,7 +57,7 @@ if ( ! class_exists( 'acf_field_select' ) ) :
function input_admin_enqueue_scripts() { function input_admin_enqueue_scripts() {
// bail ealry if no enqueue // bail early if no enqueue
if ( ! acf_get_setting( 'enqueue_select2' ) ) { if ( ! acf_get_setting( 'enqueue_select2' ) ) {
return; return;
} }
@ -83,7 +83,7 @@ if ( ! class_exists( 'acf_field_select' ) ) :
// v4 // v4
if ( $major == 4 ) { if ( $major == 4 ) {
$version = '4.0'; $version = '4.0.13';
$script = acf_get_url( "assets/inc/select2/4/select2.full{$min}.js" ); $script = acf_get_url( "assets/inc/select2/4/select2.full{$min}.js" );
$style = acf_get_url( "assets/inc/select2/4/select2{$min}.css" ); $style = acf_get_url( "assets/inc/select2/4/select2{$min}.css" );
@ -325,12 +325,7 @@ if ( ! class_exists( 'acf_field_select' ) ) :
} }
if ( ! empty( $field['query_nonce'] ) ) { if ( ! empty( $field['query_nonce'] ) ) {
acf_hidden_input( $select['data-query-nonce'] = $field['query_nonce'];
array(
'id' => 'acf-' . $field['key'] . '-query-nonce',
'value' => $field['query_nonce']
)
);
} }
// append // append

File diff suppressed because it is too large Load Diff

View File

@ -4,7 +4,7 @@ Tags: acf, fields, custom fields, meta, repeater
Requires at least: 4.7 Requires at least: 4.7
Tested up to: 5.8.1 Tested up to: 5.8.1
Requires PHP: 5.6 Requires PHP: 5.6
Stable tag: 5.11.1 Stable tag: 5.11.4
License: GPLv2 or later License: GPLv2 or later
License URI: https://www.gnu.org/licenses/gpl-2.0.html License URI: https://www.gnu.org/licenses/gpl-2.0.html
@ -76,6 +76,29 @@ From your WordPress dashboard
== Changelog == == Changelog ==
= 5.11.4 =
*Release Date - 2nd December 2021*
* Fix - Fixed several Select2.js conflicts with other plugins
* Fix - Fixed an issue where block name sanitization could change valid block names containing double hyphens
* Fix - Fixed an issue where blocks with integer IDs could fail to load example field data
= 5.11.3 =
*Release Date - 24th November 2021*
* Fix - Fixed a bug when accessing field values for options pages registered with a custom post_id
= 5.11.2 =
*Release Date - 24th November 2021*
* Fix - Previously implemented data access changes for get_field() and the_field() are now limited to the ACF shortcode only. [Learn more](https://www.advancedcustomfields.com/resources/acf-field-functions/)
* Fix - get_field() and the_field() functions can once again access meta values regardless of being registered with ACF, restoring functionality that existed before 5.11
* Fix - get_field() and the_field() functions now are only able to access site options which are ACF fields
* Fix - UI issues for select boxes related to Yoast and WooCommerces select2 versions by upgrading our select2 version, and updating our CSS to support older versions
* Fix - User fields failed to load values when using the legacy select2 v3 option
* Fix - acf_slugify() now correctly supports special characters which solves issues with block names or field group names (during imports) containing those characters
* Fix - PHP Notice generated while processing a field groups postbox classes
= 5.11.1 = = 5.11.1 =
*Release Date - 18 November 2021* *Release Date - 18 November 2021*