Merge branch 'release/5.8.1' into develop

This commit is contained in:
Remco Tolsma 2019-07-02 09:40:14 +02:00
commit 55184fc2b4
29 changed files with 695 additions and 1243 deletions

11
acf.php
View File

@ -1,12 +1,11 @@
<?php
/*
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.
Version: 5.8.0
Version: 5.8.1
Author: Elliot Condon
Author URI: http://www.elliotcondon.com/
Copyright: Elliot Condon
Author URI: https://www.advancedcustomfields.com
Text Domain: acf
Domain Path: /lang
*/
@ -18,7 +17,7 @@ if( ! class_exists('ACF') ) :
class ACF {
/** @var string The plugin version number */
var $version = '5.8.0';
var $version = '5.8.1';
/** @var array The plugin settings array */
var $settings = array();
@ -174,8 +173,6 @@ class ACF {
acf_include('includes/ajax/class-acf-ajax-check-screen.php');
acf_include('includes/ajax/class-acf-ajax-user-setting.php');
acf_include('includes/ajax/class-acf-ajax-upgrade.php');
acf_include('includes/ajax/class-acf-ajax-query.php');
acf_include('includes/ajax/class-acf-ajax-query-terms.php');
// forms
acf_include('includes/forms/form-attachment.php');

File diff suppressed because one or more lines are too long

View File

@ -568,21 +568,7 @@
*/
acf.strEscape = function( string ){
var entityMap = {
'&': '&amp;',
'<': '&lt;',
'>': '&gt;',
'"': '&quot;',
"'": '&#39;',
'/': '&#x2F;',
'`': '&#x60;',
'=': '&#x3D;'
};
return String(string).replace(/[&<>"'`=\/]/g, function (s) {
return entityMap[s];
});
return $('<div>').text(string).html();
};
/**
@ -1991,7 +1977,7 @@
// option
} else {
itemsHtml += '<option value="' + id + '"' + (item.disabled ? ' disabled="disabled"' : '') + '>' + text + '</option>';
itemsHtml += '<option value="' + id + '"' + (item.disabled ? ' disabled="disabled"' : '') + '>' + acf.strEscape(text) + '</option>';
}
});
@ -3732,6 +3718,25 @@
(function($, undefined){
/**
* postboxManager
*
* Manages postboxes on the screen.
*
* @date 25/5/19
* @since 5.8.1
*
* @param void
* @return void
*/
var postboxManager = new acf.Model({
wait: 'prepare',
priority: 1,
initialize: function(){
(acf.get('postboxes') || []).map( acf.newPostbox );
},
});
/**
* acf.getPostbox
*
@ -3852,10 +3857,12 @@
// This class is added by WP to postboxes that are hidden via the "Screen Options" tab.
this.$el.removeClass('hide-if-js');
// Add field group style class.
var style = this.get('style');
if( style !== 'default' ) {
this.$el.addClass( style );
// Add field group style class (ignore in block editor).
if( acf.get('editor') !== 'block' ) {
var style = this.get('style');
if( style !== 'default' ) {
this.$el.addClass( style );
}
}
// Add .inside class.
@ -10100,16 +10107,13 @@
}, frame);
// update toolbar button
/*
frame.on( 'toolbar:create:select', function( toolbar ) {
//frame.on( 'toolbar:create:select', function( toolbar ) {
// toolbar.view = new wp.media.view.Toolbar.Select({
// text: frame.options._button,
// controller: this
// });
//}, frame );
toolbar.view = new wp.media.view.Toolbar.Select({
text: frame.options._button,
controller: this
});
}, frame );
*/
// on select
frame.on('select', function() {
@ -10379,12 +10383,35 @@
}
// customize
this.customizeAttachmentsButton();
this.customizeAttachmentsRouter();
this.customizeAttachmentFilters();
this.customizeAttachmentCompat();
this.customizeAttachmentLibrary();
},
customizeAttachmentsButton: function(){
// validate
if( !acf.isset(wp, 'media', 'view', 'Button') ) {
return;
}
// Extend
var Button = wp.media.view.Button;
wp.media.view.Button = Button.extend({
// Fix bug where "Select" button appears blank after editing an image.
// Do this by simplifying Button initialize function and avoid deleting this.options.
initialize: function() {
var options = _.defaults( this.options, this.defaults );
this.model = new Backbone.Model( options );
this.listenTo( this.model, 'change', this.render );
}
});
},
customizeAttachmentsRouter: function(){
// validate
@ -12170,7 +12197,10 @@
init.wp_autoresize_on = false;
// Enable wpautop allowing value to save without <p> tags.
init.wpautop = true;
// Only if the "TinyMCE Advanced" plugin hasn't already set this functionality.
if( !init.tadv_noautop ) {
init.wpautop = true;
}
// hook for 3rd party customization
init = acf.applyFilters('wysiwyg_tinymce_settings', init, id, field);

File diff suppressed because one or more lines are too long

View File

@ -1038,7 +1038,7 @@ function acf_import_field_group( $field_group ) {
// Only add menu order if doesn't already exist.
// Allows Flexible Content field to set custom order.
if( empty($field['menu_order']) ) {
if( !isset($field['menu_order']) ) {
$field['menu_order'] = ($count[ $field['parent'] ] - 1);
}

View File

@ -33,6 +33,61 @@ function acf_get_users( $args = array() ) {
return $users;
}
/**
* acf_get_user_result
*
* Returns a result containing "id" and "text" for the given user.
*
* @date 21/5/19
* @since 5.8.1
*
* @param WP_User $user The user object.
* @return array
*/
function acf_get_user_result( $user ) {
// Vars.
$id = $user->ID;
$text = $user->user_login;
// Add name.
if( $user->first_name && $user->last_name ) {
$text .= " ({$user->first_name} {$user->last_name})";
} elseif( $user->last_name ) {
$text .= " ({$user->first_name})";
}
return compact('id', 'text');
}
/**
* acf_get_user_role_labels
*
* Returns an array of user roles in the format "name => label".
*
* @date 20/5/19
* @since 5.8.1
*
* @param array $roles A specific array of roles.
* @return array
*/
function acf_get_user_role_labels( $roles = array() ) {
// Load all roles if none provided.
if( !$roles ) {
$roles = get_editable_roles();
}
// Loop over roles and populare labels.
$lables = array();
foreach( $roles as $role ) {
$lables[ $role ] = translate_user_role( $role );
}
// Return labels.
return $lables;
}
/**
* acf_allow_unfiltered_html
*

View File

@ -6,31 +6,30 @@ if( ! class_exists('ACF_Ajax_Check_Screen') ) :
class ACF_Ajax_Check_Screen extends ACF_Ajax {
/** @var string The AJAX action name */
/** @var string The AJAX action name. */
var $action = 'acf/ajax/check_screen';
/** @var bool Prevents access for non-logged in users */
/** @var bool Prevents access for non-logged in users. */
var $public = false;
/**
* get_response
*
* The actual logic for this AJAX request.
*
* @date 31/7/18
* @since 5.7.2
*
* @param void
* @return mixed The response data to send back or WP_Error.
*/
function response() {
* get_response
*
* Returns the response data to sent back.
*
* @date 31/7/18
* @since 5.7.2
*
* @param array $request The request args.
* @return mixed The response data or WP_Error.
*/
function get_response( $request ) {
// vars
$args = acf_parse_args($this->request, array(
$args = wp_parse_args($this->request, array(
'screen' => '',
'post_id' => 0,
'ajax' => 1,
'ajax' => true,
'exists' => array()
));

View File

@ -1,141 +0,0 @@
<?php
if( ! defined( 'ABSPATH' ) ) exit; // Exit if accessed directly
if( ! class_exists('ACF_Ajax_Query_Terms') ) :
class ACF_Ajax_Query_Terms extends ACF_Ajax_Query {
/** @var string The AJAX action name */
var $action = 'acf/ajax/query_terms';
/**
* get_args
*
* description
*
* @date 31/7/18
* @since 5.7.2
*
* @param type $var Description. Default.
* @return type Description.
*/
function get_args() {
// defaults
$args = wp_parse_args($this->get('query'), array(
'taxonomy' => 'category',
'search' => $this->search,
'number' => $this->per_page,
));
// pagination
if( $this->page > 0 ) {
$args['offset'] = $this->per_page * ($this->page - 1);
}
// return
return $args;
}
/**
* get_results
*
* description
*
* @date 31/7/18
* @since 5.7.2
*
* @param type $var Description. Default.
* @return type Description.
*/
function get_results( $args ) {
// vars
$results = array();
// get terms
$groups = acf_get_grouped_terms( $args );
// loop
if( $groups ) {
foreach( $groups as $label => $terms ) {
// data
$data = array(
'text' => $label,
'children' => array()
);
// convert object to string
foreach( $terms as $id => $term ) {
$terms[ $id ] = $this->get_result( $term );
}
// order posts by search
if( $this->search && !isset($args['orderby']) ) {
$terms = acf_order_by_search( $terms, $this->search );
}
// append to $data
foreach( $terms as $id => $text ) {
$this->count++;
$data['children'][] = array(
'id' => $id,
'text' => $text
);
}
// append to $results
$results[] = $data;
}}
// extract group children for a single taxonomy
$taxonomies = acf_get_array($args['taxonomy']);
if( count($taxonomies) == 1 ) {
$results = $results[0]['children'];
}
// return
return $results;
}
/**
* get_result
*
* description
*
* @date 31/7/18
* @since 5.7.2
*
* @param type $var Description. Default.
* @return type Description.
*/
function get_result( $term ) {
// vars
$title = $term->name;
// ancestors
$ancestors = get_ancestors( $term->term_id, $term->taxonomy );
if( $ancestors ) {
$prepend = str_repeat('- ', count($ancestors));
return $prepend . $title;
}
// return
return $title;
}
}
acf_new_instance('ACF_AJAX_Query_Terms');
endif; // class_exists check
?>

View File

@ -1,133 +0,0 @@
<?php
if( ! defined( 'ABSPATH' ) ) exit; // Exit if accessed directly
if( ! class_exists('ACF_Ajax_Query') ) :
class ACF_Ajax_Query extends ACF_Ajax {
/** @var array The ACF field used for querying */
var $field = false;
/** @var int The page of results to return */
var $page = 1;
/** @var int The number of results per page */
var $per_page = 20;
/** @var string The searched term */
var $search = '';
/** @var int The number of results found */
var $count = 0;
/**
* response
*
* The actual logic for this AJAX request.
*
* @date 31/7/18
* @since 5.7.2
*
* @param void
* @return void
*/
function response() {
// field
if( $this->has('field_key') ) {
$this->field = acf_get_field( $this->get('field_key') );
}
// pagination
if( $this->has('paged') ) {
$this->page = (int) $this->get('paged');
}
// search
if( $this->has('s') ) {
$this->search = $this->get('s');
}
// get response
$args = $this->get_args();
$results = $this->get_results($args);
$response = $this->get_response($results, $args);
// return
return $response;
}
/**
* get_args
*
* description
*
* @date 31/7/18
* @since 5.7.2
*
* @param type $var Description. Default.
* @return type Description.
*/
function get_args() {
return array();
}
/**
* get_results
*
* description
*
* @date 31/7/18
* @since 5.7.2
*
* @param type $var Description. Default.
* @return type Description.
*/
function get_results( $args ) {
return array();
}
/**
* get_result
*
* description
*
* @date 31/7/18
* @since 5.7.2
*
* @param type $var Description. Default.
* @return type Description.
*/
function get_result( $item ) {
return '';
}
/**
* get_response
*
* description
*
* @date 31/7/18
* @since 5.6.9
*
* @param type $var Description. Default.
* @return type Description.
*/
function get_response( $results, $args ) {
return array(
'results' => $results,
'more' => ($this->count >= $this->per_page)
);
}
}
endif; // class_exists check
?>

View File

@ -10,44 +10,41 @@ class ACF_Ajax_Upgrade extends ACF_Ajax {
var $action = 'acf/ajax/upgrade';
/**
* get_response
*
* The actual logic for this AJAX request.
*
* @date 31/7/18
* @since 5.7.2
*
* @param void
* @return mixed The response data to send back or WP_Error.
*/
* get_response
*
* Returns the response data to sent back.
*
* @date 31/7/18
* @since 5.7.2
*
* @param array $request The request args.
* @return mixed The response data or WP_Error.
*/
function get_response( $request ) {
function response() {
// switch blog
if( $this->has('blog_id') ) {
switch_to_blog( $this->get('blog_id') );
// Switch blog.
if( isset($request['blog_id']) ) {
switch_to_blog( $request['blog_id'] );
}
// bail early if no upgrade avaiable
// Bail early if no upgrade avaiable.
if( !acf_has_upgrade() ) {
return new WP_Error( 'upgrade_error', __('No updates available.', 'acf') );
}
// listen for output
// Listen for output.
ob_start();
// run upgrades
// Run upgrades.
acf_upgrade_all();
// store output
// Store output.
$error = ob_get_clean();
// return error if output
// Return error or success.
if( $error ) {
return new WP_Error( 'upgrade_error', $error );
}
// return
return true;
}
}
@ -55,5 +52,3 @@ class ACF_Ajax_Upgrade extends ACF_Ajax {
acf_new_instance('ACF_Ajax_Upgrade');
endif; // class_exists check
?>

View File

@ -6,25 +6,24 @@ if( ! class_exists('ACF_Ajax_User_Setting') ) :
class ACF_Ajax_User_Setting extends ACF_Ajax {
/** @var string The AJAX action name */
/** @var string The AJAX action name. */
var $action = 'acf/ajax/user_setting';
/** @var bool Prevents access for non-logged in users */
/** @var bool Prevents access for non-logged in users. */
var $public = true;
/**
* get_response
*
* The actual logic for this AJAX request.
*
* @date 31/7/18
* @since 5.7.2
*
* @param void
* @return mixed The response data to send back or WP_Error.
*/
function response() {
* get_response
*
* Returns the response data to sent back.
*
* @date 31/7/18
* @since 5.7.2
*
* @param array $request The request args.
* @return mixed The response data or WP_Error.
*/
function get_response( $request ) {
// update
if( $this->has('value') ) {
@ -40,5 +39,3 @@ class ACF_Ajax_User_Setting extends ACF_Ajax {
acf_new_instance('ACF_Ajax_User_Setting');
endif; // class_exists check
?>

View File

@ -6,112 +6,104 @@ if( ! class_exists('ACF_Ajax') ) :
class ACF_Ajax {
/** @var string The AJAX action name */
/** @var string The AJAX action name. */
var $action = '';
/** @var array The $_REQUEST data */
/** @var array The $_REQUEST data. */
var $request;
/** @var bool Prevents access for non-logged in users */
/** @var bool Prevents access for non-logged in users. */
var $public = false;
/**
* __construct
*
* Sets up the class functionality.
*
* @date 31/7/18
* @since 5.7.2
*
* @param void
* @return void
*/
* __construct
*
* Sets up the class functionality.
*
* @date 31/7/18
* @since 5.7.2
*
* @param void
* @return void
*/
function __construct() {
// initialize
$this->initialize();
// add actions
$this->add_actions();
}
/**
* initialize
*
* Allows easy access to modifying properties without changing constructor.
*
* @date 31/7/18
* @since 5.7.2
*
* @param void
* @return void
*/
function initialize() {
/* do nothing */
}
/**
* has
*
* Returns true if the request has data for the given key
*
* @date 31/7/18
* @since 5.7.2
*
* @param string $key The data key
* @return boolean
*/
* has
*
* Returns true if the request has data for the given key.
*
* @date 31/7/18
* @since 5.7.2
*
* @param string $key The data key.
* @return boolean
*/
function has( $key = '' ) {
return isset($this->request[$key]);
}
/**
* get
*
* Returns request data for the given key
*
* @date 31/7/18
* @since 5.7.2
*
* @param string $key The data key
* @return mixed
*/
* get
*
* Returns request data for the given key.
*
* @date 31/7/18
* @since 5.7.2
*
* @param string $key The data key.
* @return mixed
*/
function get( $key = '' ) {
return isset($this->request[$key]) ? $this->request[$key] : null;
}
/**
* set
*
* Sets request data for the given key
*
* @date 31/7/18
* @since 5.7.2
*
* @param string $key The data key
* @return mixed
*/
* set
*
* Sets request data for the given key.
*
* @date 31/7/18
* @since 5.7.2
*
* @param string $key The data key.
* @param mixed $value The data value.
* @return ACF_Ajax
*/
function set( $key = '', $value ) {
$this->request[$key] = $value;
return $this;
}
/**
* add_actions
*
* Adds the ajax actions for this response.
*
* @date 31/7/18
* @since 5.7.2
*
* @param void
* @return void
*/
* initialize
*
* Allows easy access to modifying properties without changing constructor.
*
* @date 31/7/18
* @since 5.7.2
*
* @param void
* @return void
*/
function initialize() {
/* do nothing */
}
/**
* add_actions
*
* Adds the ajax actions for this response.
*
* @date 31/7/18
* @since 5.7.2
*
* @param void
* @return void
*/
function add_actions() {
// add action for logged-in users
@ -124,66 +116,63 @@ class ACF_Ajax {
}
/**
* request
*
* Callback for ajax action. Sets up properties and calls the get_response() function.
*
* @date 1/8/18
* @since 5.7.2
*
* @param void
* @return void
*/
* request
*
* Callback for ajax action. Sets up properties and calls the get_response() function.
*
* @date 1/8/18
* @since 5.7.2
*
* @param void
* @return void
*/
function request() {
// verify ajax request
// Verify ajax request
if( !acf_verify_ajax() ) {
wp_send_json_error();
}
// store data for has() and get() functions
// Store data for has() and get() functions.
$this->request = wp_unslash($_REQUEST);
// send response
$this->send( $this->response() );
// Send response.
$this->send( $this->get_response( $this->request ) );
}
/**
* response
*
* The actual logic for this AJAX request.
*
* @date 31/7/18
* @since 5.7.2
*
* @param void
* @return mixed The response data to send back or WP_Error.
*/
function response() {
* get_response
*
* Returns the response data to sent back.
*
* @date 31/7/18
* @since 5.7.2
*
* @param array $request The request args.
* @return mixed The response data or WP_Error.
*/
function get_response( $request ) {
return true;
}
/**
* send
*
* Sends back JSON based on the $response as either success or failure.
*
* @date 31/7/18
* @since 5.7.2
*
* @param mixed $response The response to send back.
* @return void
*/
* send
*
* Sends back JSON based on the $response as either success or failure.
*
* @date 31/7/18
* @since 5.7.2
*
* @param mixed $response The response to send back.
* @return void
*/
function send( $response ) {
// return error
// Return error.
if( is_wp_error($response) ) {
wp_send_json_error(array( 'error' => $response->get_error_message() ));
// return success
// Return success.
} else {
wp_send_json_success($response);
}

View File

@ -4210,48 +4210,41 @@ function acf_get_post_thumbnail( $post = null, $size = 'thumbnail' ) {
}
/*
* acf_get_browser
*
* This functino will return the browser string for major browsers
*
* @type function
* @date 17/01/2014
* @since 5.0.0
*
* @param n/a
* @return (string)
*/
/**
* acf_get_browser
*
* Returns the name of the current browser.
*
* @date 17/01/2014
* @since 5.0.0
*
* @param void
* @return string
*/
function acf_get_browser() {
// vars
$agent = $_SERVER['HTTP_USER_AGENT'];
// browsers
$browsers = array(
'Firefox' => 'firefox',
'Trident' => 'msie',
'MSIE' => 'msie',
'Edge' => 'edge',
'Chrome' => 'chrome',
'Safari' => 'safari',
);
// loop
foreach( $browsers as $k => $v ) {
if( strpos($agent, $k) !== false ) return $v;
// Check server var.
if( isset($_SERVER['HTTP_USER_AGENT']) ) {
$agent = $_SERVER['HTTP_USER_AGENT'];
// Loop over search terms.
$browsers = array(
'Firefox' => 'firefox',
'Trident' => 'msie',
'MSIE' => 'msie',
'Edge' => 'edge',
'Chrome' => 'chrome',
'Safari' => 'safari',
);
foreach( $browsers as $k => $v ) {
if( strpos($agent, $k) !== false ) {
return $v;
}
}
}
// return
// Return default.
return '';
}
@ -4918,31 +4911,13 @@ function acf_parse_markdown( $text = '' ) {
* @return array
*/
function acf_get_sites() {
// vars
$results = array();
// function get_sites() was added in WP 4.6
if( function_exists('get_sites') ) {
$_sites = get_sites(array(
'number' => 0
));
if( $_sites ) {
foreach( $_sites as $_site ) {
$_site = get_site( $_site );
$results[] = $_site->to_array();
}}
// function wp_get_sites() returns in the desired output
} else {
$results = wp_get_sites(array(
'limit' => 0
));
$sites = get_sites( array( 'number' => 0 ) );
if( $sites ) {
foreach( $sites as $site ) {
$results[] = get_site( $site )->to_array();
}
}
// return
return $results;
}
@ -5063,17 +5038,24 @@ function acf_array_camel_case( $array = array() ) {
}
/**
* acf_is_block_editor
*
* Returns true if the current screen uses the block editor.
*
* @date 13/12/18
* @since 5.8.0
*
* @return bool
*/
* acf_is_block_editor
*
* Returns true if the current screen uses the block editor.
*
* @date 13/12/18
* @since 5.8.0
*
* @param void
* @return bool
*/
function acf_is_block_editor() {
return get_current_screen()->is_block_editor();
if( function_exists('get_current_screen') ) {
$screen = get_current_screen();
if( method_exists($screen, 'is_block_editor') ) {
return $screen->is_block_editor();
}
}
return false;
}
?>

View File

@ -314,7 +314,8 @@ class ACF_Assets {
'acf_version' => acf_get_setting('version'),
'browser' => acf_get_browser(),
'locale' => acf_get_locale(),
'rtl' => is_rtl()
'rtl' => is_rtl(),
'editor' => acf_is_block_editor() ? 'block' : 'classic'
));
// get l10n (old)

View File

@ -26,7 +26,7 @@ class acf_field_image extends acf_field {
$this->category = 'content';
$this->defaults = array(
'return_format' => 'array',
'preview_size' => 'thumbnail',
'preview_size' => 'medium',
'library' => 'all',
'min_width' => 0,
'min_height' => 0,
@ -202,8 +202,8 @@ class acf_field_image extends acf_field {
// return_format
acf_render_field_setting( $field, array(
'label' => __('Return Value','acf'),
'instructions' => __('Specify the returned value on front end','acf'),
'label' => __('Return Format','acf'),
'instructions' => '',
'type' => 'radio',
'name' => 'return_format',
'layout' => 'horizontal',
@ -218,7 +218,7 @@ class acf_field_image extends acf_field {
// preview_size
acf_render_field_setting( $field, array(
'label' => __('Preview Size','acf'),
'instructions' => __('Shown when entering data','acf'),
'instructions' => '',
'type' => 'select',
'name' => 'preview_size',
'choices' => acf_get_image_sizes()

View File

@ -77,6 +77,9 @@ class ACF_Form_Post {
*/
function add_meta_boxes( $post_type, $post ) {
// Storage for localized postboxes.
$postboxes = array();
// Get field groups for this screen.
$field_groups = acf_get_field_groups(array(
'post_id' => $post->ID,
@ -99,22 +102,37 @@ class ACF_Form_Post {
}
/**
* Filters the metabox priority.
*
* @date 23/06/12
* @since 3.1.8
*
* @param string $priority The metabox priority (high, core, default, low).
* @param array $field_group The field group array.
*/
* Filters the metabox priority.
*
* @date 23/06/12
* @since 3.1.8
*
* @param string $priority The metabox priority (high, core, default, low).
* @param array $field_group The field group array.
*/
$priority = apply_filters('acf/input/meta_box_priority', $priority, $field_group);
// Localize data
$postboxes[] = array(
'id' => $id,
'key' => $field_group['key'],
'style' => $field_group['style'],
'label' => $field_group['label_placement'],
'edit' => acf_get_field_group_edit_link( $field_group['ID'] )
);
// Add the meta box.
add_meta_box( $id, $title, array($this, 'render_meta_box'), $post_type, $context, $priority, array('field_group' => $field_group) );
}
// Get style from first field group.
// Set style from first field group.
$this->style = acf_get_field_group_style( $field_groups[0] );
// Localize postboxes.
acf_localize_data(array(
'postboxes' => $postboxes
));
}
// remove postcustom metabox (removes expensive SQL query)
@ -188,23 +206,6 @@ class ACF_Form_Post {
// Render fields.
$fields = acf_get_fields( $field_group );
acf_render_fields( $fields, $post->ID, 'div', $field_group['instruction_placement'] );
// Create metabox localized data.
$data = array(
'id' => $id,
'key' => $field_group['key'],
'style' => $field_group['style'],
'label' => $field_group['label_placement'],
'edit' => acf_get_field_group_edit_link( $field_group['ID'] )
);
?>
<script type="text/javascript">
if( typeof acf !== 'undefined' ) {
acf.newPostbox(<?php echo wp_json_encode($data); ?>);
}
</script>
<?php
}
/**

Binary file not shown.

View File

@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: Advanced Custom Fields Pro v5.8\n"
"Report-Msgid-Bugs-To: http://support.advancedcustomfields.com\n"
"POT-Creation-Date: 2019-05-02 00:07+0200\n"
"PO-Revision-Date: 2019-05-02 00:32+0200\n"
"POT-Creation-Date: 2019-05-09 15:51+0200\n"
"PO-Revision-Date: 2019-05-09 17:23+0200\n"
"Last-Translator: Ralf Koller <r.koller@gmail.com>\n"
"Language-Team: Ralf Koller <r.koller@gmail.com>\n"
"Language: de_DE\n"
@ -1011,7 +1011,8 @@ msgid ""
"Are you sure you wish to run the updater now?"
msgstr ""
"Es wird dringend empfohlen, dass du deine Datenbank sicherst, bevor Du "
"fortfährst. Bist du sicher, dass du jetzt das Upgrade durchführen willst?"
"fortfährst. Bist du sicher, dass du jetzt die Aktualisierung durchführen "
"willst?"
# @ acf
#: includes/admin/views/html-admin-page-upgrade-network.php:144
@ -1239,7 +1240,7 @@ msgid ""
msgstr ""
"ACF PRO enthält leistungsstarke Funktionen wie wiederholbare Daten, Flexible "
"Inhalte-Layouts, ein wunderschönes Galerie-Feld sowie die Möglichkeit "
"zusätzliche Options-Seiten im Admin-Bereich anzulegen!"
"zusätzliche Options-Seiten im Admin-Bereich zu erstellen!"
# @ acf
#: includes/admin/views/settings-info.php:49
@ -1297,8 +1298,8 @@ msgstr "Gruppen-Feld"
#: includes/admin/views/settings-info.php:75
msgid "The Group field provides a simple way to create a group of fields."
msgstr ""
"Das Gruppen-Feld erlaubt auf eine einfache Weise Felder in Gruppen "
"zusammenzufassen."
"Das Gruppen-Feld bietet einen einfachen Weg eine Gruppe von Feldern zu "
"erstellen."
# @ acf
#: includes/admin/views/settings-info.php:79
@ -1461,7 +1462,7 @@ msgstr "Wir glauben Du wirst die Änderungen in %s lieben."
# @ acf
#: includes/api/api-helpers.php:1003
msgid "Thumbnail"
msgstr "Miniaturbild"
msgstr "Vorschaubild"
# @ acf
#: includes/api/api-helpers.php:1004
@ -3236,7 +3237,7 @@ msgstr "Aktuelle Benutzerrolle"
# @ acf
#: includes/locations/class-acf-location-current-user-role.php:110
msgid "Super Admin"
msgstr "Super-Admin"
msgstr "Super-Administrator"
# @ acf
#: includes/locations/class-acf-location-current-user.php:27
@ -3324,17 +3325,17 @@ msgstr "Unterseite (mit übergeordneter Seite)"
# @ acf
#: includes/locations/class-acf-location-post-category.php:27
msgid "Post Category"
msgstr "Beitrags-Kategorie"
msgstr "Beitragskategorie"
# @ acf
#: includes/locations/class-acf-location-post-format.php:27
msgid "Post Format"
msgstr "Beitrags-Format"
msgstr "Beitragsformat"
# @ acf
#: includes/locations/class-acf-location-post-status.php:27
msgid "Post Status"
msgstr "Beitrags-Status"
msgstr "Beitragsstatus"
# @ acf
#: includes/locations/class-acf-location-post-taxonomy.php:27
@ -3349,7 +3350,7 @@ msgstr "Beitrags-Template"
# @ acf
#: includes/locations/class-acf-location-user-form.php:27
msgid "User Form"
msgstr "Benutzer-Formular"
msgstr "Benutzerformular"
# @ acf
#: includes/locations/class-acf-location-user-form.php:88
@ -3375,7 +3376,7 @@ msgstr "Widget"
#: includes/validation.php:364
#, php-format
msgid "%s value is required"
msgstr "%s Wert ist notwendig"
msgstr "%s Wert ist erforderlich"
# @ acf
#. Plugin Name of the plugin/theme
@ -3402,8 +3403,8 @@ msgstr ""
#: pro/admin/admin-updates.php:49
msgid "<b>Error</b>. Could not connect to update server"
msgstr ""
"<b>Fehler</b>. Es konnte keine Verbindung zum Update-Server hergestellt "
"werden"
"<b>Fehler</b>. Es konnte keine Verbindung zum Aktualisierungsserver "
"hergestellt werden"
# @ acf
#: pro/admin/admin-updates.php:118 pro/admin/views/html-settings-updates.php:13
@ -3415,8 +3416,9 @@ msgid ""
"<b>Error</b>. Could not authenticate update package. Please check again or "
"deactivate and reactivate your ACF PRO license."
msgstr ""
"<b>Fehler</b>. Das Update-Packet konnte nicht authentifiziert werden. Bitte "
"probiere es nochmal oder deaktiviere und reaktiviere deine ACF PRO-Lizenz."
"<b>Fehler</b>. Das Aktualisierungspaket konnte nicht authentifiziert werden. "
"Bitte probiere es nochmal oder deaktiviere und reaktiviere deine ACF PRO-"
"Lizenz."
# @ acf
#: pro/admin/views/html-settings-updates.php:7
@ -3439,10 +3441,10 @@ msgid ""
"licence key, please see <a href=\"%s\" target=\"_blank\">details & pricing</"
"a>."
msgstr ""
"Um die Updatefähigkeit freizuschalten gib bitte unten Deinen Lizenzschlüssel "
"ein. Falls Du keinen besitzen solltest informiere Dich bitte hier "
"hinsichtlich <a href=\"%s\" target=\"_blank\">Preisen und aller weiteren "
"Details</a>."
"Um die Aktualisierungsfähigkeit freizuschalten gib bitte unten Deinen "
"Lizenzschlüssel ein. Falls Du keinen besitzen solltest informiere Dich bitte "
"hier hinsichtlich <a href=\"%s\" target=\"_blank\">Preisen und aller "
"weiteren Details</a>."
# @ acf
#: pro/admin/views/html-settings-updates.php:29
@ -3478,7 +3480,7 @@ msgstr "Plugin aktualisieren"
#: pro/admin/views/html-settings-updates.php:94
msgid "Please enter your license key above to unlock updates"
msgstr ""
"Bitte gib oben Deinen Lizenzschlüssel ein um die Update-Fähigkeit "
"Bitte gib oben Deinen Lizenzschlüssel ein um die Aktualisierungsfähigkeit "
"freizuschalten"
# @ acf
@ -3489,7 +3491,7 @@ msgstr "Erneut suchen"
# @ acf
#: pro/admin/views/html-settings-updates.php:117
msgid "Upgrade Notice"
msgstr "Aktualisierungs-Hinweis"
msgstr "Hinweis zum Upgrade"
#: pro/blocks.php:371
msgid "Switch to Edit"
@ -3824,10 +3826,10 @@ msgid ""
"\">Updates</a> page. If you don't have a licence key, please see <a href=\"%s"
"\">details & pricing</a>."
msgstr ""
"Um die Update-Fähigkeit freizuschalten gib bitte Deinen Lizenzschlüssel auf "
"der <a href=\"%s\">Aktualisierungen</a> Seite ein. Falls Du keinen besitzt "
"informiere Dich bitte hier hinsichtlich der <a href=\"%s\" target=\"_blank"
"\">Preise und Einzelheiten</a>."
"Um die Aktualisierungsfähigkeit freizuschalten gib bitte Deinen "
"Lizenzschlüssel auf der <a href=\"%s\">Aktualisierungen</a> Seite ein. Falls "
"Du keinen besitzt informiere Dich bitte hier hinsichtlich der <a href=\"%s\" "
"target=\"_blank\">Preise und Einzelheiten</a>."
#: tests/basic/test-blocks.php:13
msgid "Testimonial"
@ -3837,6 +3839,15 @@ msgstr "Testimonial"
msgid "A custom testimonial block."
msgstr "Ein individueller Testimonial-Block."
#: tests/basic/test-blocks.php:40
msgid "Slider"
msgstr "Slider"
# @ acf
#: tests/basic/test-blocks.php:41
msgid "A custom gallery slider."
msgstr "Ein individueller Galerie-Slider."
#. Plugin URI of the plugin/theme
msgid "https://www.advancedcustomfields.com/"
msgstr "https://www.advancedcustomfields.com/"

Binary file not shown.

View File

@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: Advanced Custom Fields Pro v5.8 Formal\n"
"Report-Msgid-Bugs-To: http://support.advancedcustomfields.com\n"
"POT-Creation-Date: 2019-05-02 00:08+0200\n"
"PO-Revision-Date: 2019-05-02 00:32+0200\n"
"POT-Creation-Date: 2019-05-09 15:54+0200\n"
"PO-Revision-Date: 2019-05-09 17:23+0200\n"
"Last-Translator: Ralf Koller <r.koller@gmail.com>\n"
"Language-Team: Ralf Koller <r.koller@gmail.com>\n"
"Language: de_DE\n"
@ -1011,7 +1011,8 @@ msgid ""
"Are you sure you wish to run the updater now?"
msgstr ""
"Es wird dringend empfohlen, dass Sie ihre Datenbank sichern, bevor Sie "
"fortfahren. Sind sie sicher, dass Sie jetzt das Upgrade durchführen wollen?"
"fortfahren. Sind sie sicher, dass Sie jetzt die Aktualisierung durchführen "
"wollen?"
# @ acf
#: includes/admin/views/html-admin-page-upgrade-network.php:144
@ -1239,7 +1240,7 @@ msgid ""
msgstr ""
"ACF PRO enthält leistungsstarke Funktionen wie wiederholbare Daten, Flexible "
"Inhalte-Layouts, ein wunderschönes Galerie-Feld sowie die Möglichkeit "
"zusätzliche Options-Seiten im Admin-Bereich anzulegen!"
"zusätzliche Options-Seiten im Admin-Bereich zu erstellen!"
# @ acf
#: includes/admin/views/settings-info.php:49
@ -1297,8 +1298,8 @@ msgstr "Gruppen-Feld"
#: includes/admin/views/settings-info.php:75
msgid "The Group field provides a simple way to create a group of fields."
msgstr ""
"Das Gruppen-Feld erlaubt auf eine einfache Weise Felder in Gruppen "
"zusammenzufassen."
"Das Gruppen-Feld bietet einen einfachen Weg eine Gruppe von Feldern zu "
"erstellen."
# @ acf
#: includes/admin/views/settings-info.php:79
@ -1461,7 +1462,7 @@ msgstr "Wir glauben Sie werden die Änderungen in %s lieben."
# @ acf
#: includes/api/api-helpers.php:1003
msgid "Thumbnail"
msgstr "Miniaturbild"
msgstr "Vorschaubild"
# @ acf
#: includes/api/api-helpers.php:1004
@ -3237,7 +3238,7 @@ msgstr "Aktuelle Benutzerrolle"
# @ acf
#: includes/locations/class-acf-location-current-user-role.php:110
msgid "Super Admin"
msgstr "Super-Admin"
msgstr "Super-Administrator"
# @ acf
#: includes/locations/class-acf-location-current-user.php:27
@ -3325,17 +3326,17 @@ msgstr "Unterseite (mit übergeordneter Seite)"
# @ acf
#: includes/locations/class-acf-location-post-category.php:27
msgid "Post Category"
msgstr "Beitrags-Kategorie"
msgstr "Beitragskategorie"
# @ acf
#: includes/locations/class-acf-location-post-format.php:27
msgid "Post Format"
msgstr "Beitrags-Format"
msgstr "Beitragsformat"
# @ acf
#: includes/locations/class-acf-location-post-status.php:27
msgid "Post Status"
msgstr "Beitrags-Status"
msgstr "Beitragsstatus"
# @ acf
#: includes/locations/class-acf-location-post-taxonomy.php:27
@ -3350,7 +3351,7 @@ msgstr "Beitrags-Template"
# @ acf
#: includes/locations/class-acf-location-user-form.php:27
msgid "User Form"
msgstr "Benutzer-Formular"
msgstr "Benutzerformular"
# @ acf
#: includes/locations/class-acf-location-user-form.php:88
@ -3376,7 +3377,7 @@ msgstr "Widget"
#: includes/validation.php:364
#, php-format
msgid "%s value is required"
msgstr "%s Wert ist notwendig"
msgstr "%s Wert ist erforderlich"
# @ acf
#. Plugin Name of the plugin/theme
@ -3403,8 +3404,8 @@ msgstr ""
#: pro/admin/admin-updates.php:49
msgid "<b>Error</b>. Could not connect to update server"
msgstr ""
"<b>Fehler</b>. Es konnte keine Verbindung zum Update-Server hergestellt "
"werden"
"<b>Fehler</b>. Es konnte keine Verbindung zum Aktualisierungsserver "
"hergestellt werden"
# @ acf
#: pro/admin/admin-updates.php:118 pro/admin/views/html-settings-updates.php:13
@ -3416,9 +3417,9 @@ msgid ""
"<b>Error</b>. Could not authenticate update package. Please check again or "
"deactivate and reactivate your ACF PRO license."
msgstr ""
"<b>Fehler</b>. Das Update-Packet konnte nicht authentifiziert werden. Bitte "
"probieren Sie es nochmal oder deaktivieren und reaktivieren Sie ihre ACF PRO-"
"Lizenz."
"<b>Fehler</b>. Das Aktualisierungspaket konnte nicht authentifiziert werden. "
"Bitte probieren Sie es nochmal oder deaktivieren und reaktivieren Sie ihre "
"ACF PRO-Lizenz."
# @ acf
#: pro/admin/views/html-settings-updates.php:7
@ -3441,7 +3442,7 @@ msgid ""
"licence key, please see <a href=\"%s\" target=\"_blank\">details & pricing</"
"a>."
msgstr ""
"Um die Updatefähigkeit freizuschalten geben Sie bitte unten Ihren "
"Um die Aktualisierungsfähigkeit freizuschalten geben Sie bitte unten Ihren "
"Lizenzschlüssel ein. Falls Sie keinen besitzen sollten informieren Sie sich "
"bitte hier hinsichtlich <a href=\"%s\" target=\"_blank\">Preisen und aller "
"weiteren Details</a>."
@ -3480,8 +3481,8 @@ msgstr "Plugin aktualisieren"
#: pro/admin/views/html-settings-updates.php:94
msgid "Please enter your license key above to unlock updates"
msgstr ""
"Bitte geben Sie oben Ihren Lizenzschlüssel ein um die Update-Fähigkeit "
"freizuschalten"
"Bitte geben Sie oben Ihren Lizenzschlüssel ein um die "
"Aktualisierungsfähigkeit freizuschalten"
# @ acf
#: pro/admin/views/html-settings-updates.php:100
@ -3491,7 +3492,7 @@ msgstr "Erneut suchen"
# @ acf
#: pro/admin/views/html-settings-updates.php:117
msgid "Upgrade Notice"
msgstr "Aktualisierungs-Hinweis"
msgstr "Hinweis zum Upgrade"
#: pro/blocks.php:371
msgid "Switch to Edit"
@ -3826,10 +3827,10 @@ msgid ""
"\">Updates</a> page. If you don't have a licence key, please see <a href=\"%s"
"\">details & pricing</a>."
msgstr ""
"Um die Update-Fähigkeit freizuschalten geben Sie bitte Ihren Lizenzschlüssel "
"auf der <a href=\"%s\">Aktualisierungen</a> Seite ein. Falls Sie keinen "
"besitzen informieren Sie sich bitte hier hinsichtlich der <a href=\"%s\" "
"target=\"_blank\">Preise und Einzelheiten</a>."
"Um die Aktualisierungsfähigkeit freizuschalten geben Sie bitte Ihren "
"Lizenzschlüssel auf der <a href=\"%s\">Aktualisierungen</a> Seite ein. Falls "
"Sie keinen besitzen informieren Sie sich bitte hier hinsichtlich der <a href="
"\"%s\" target=\"_blank\">Preise und Einzelheiten</a>."
#: tests/basic/test-blocks.php:13
msgid "Testimonial"
@ -3839,6 +3840,15 @@ msgstr "Testimonial"
msgid "A custom testimonial block."
msgstr "Ein individueller Testimonial-Block."
#: tests/basic/test-blocks.php:40
msgid "Slider"
msgstr "Slider"
# @ acf
#: tests/basic/test-blocks.php:41
msgid "A custom gallery slider."
msgstr "Ein individueller Galerie-Slider."
#. Plugin URI of the plugin/theme
msgid "https://www.advancedcustomfields.com/"
msgstr "https://www.advancedcustomfields.com/"

Binary file not shown.

View File

@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: Advanced Custom Fields Pro v5.7.11\n"
"Report-Msgid-Bugs-To: http://support.advancedcustomfields.com\n"
"POT-Creation-Date: 2019-02-14 15:11+0330\n"
"PO-Revision-Date: 2019-02-14 15:11+0330\n"
"POT-Creation-Date: 2019-05-08 14:09+0430\n"
"PO-Revision-Date: 2019-05-08 14:13+0430\n"
"Last-Translator: Elliot Condon <e@elliotcondon.com>\n"
"Language-Team: Majix <mimapien@gmail.com>\n"
"Language: fa\n"
@ -26,102 +26,102 @@ msgstr ""
msgid "Advanced Custom Fields"
msgstr "زمینه‌های سفارشی پیشرفته"
#: acf.php:362 includes/admin/admin.php:58
#: acf.php:363 includes/admin/admin.php:58
msgid "Field Groups"
msgstr "گروه‌های زمینه"
#: acf.php:363
#: acf.php:364
msgid "Field Group"
msgstr "گروه زمینه"
#: acf.php:364 acf.php:396 includes/admin/admin.php:59
#: pro/fields/class-acf-field-flexible-content.php:557
#: acf.php:365 acf.php:397 includes/admin/admin.php:59
#: pro/fields/class-acf-field-flexible-content.php:558
msgid "Add New"
msgstr "افزودن"
#: acf.php:365
#: acf.php:366
msgid "Add New Field Group"
msgstr "افزودن گروه زمینه جدید"
#: acf.php:366
#: acf.php:367
msgid "Edit Field Group"
msgstr "ویرایش گروه زمینه"
#: acf.php:367
#: acf.php:368
msgid "New Field Group"
msgstr "گروه زمینه جدید"
#: acf.php:368
#: acf.php:369
msgid "View Field Group"
msgstr "مشاهده گروه زمینه"
#: acf.php:369
#: acf.php:370
msgid "Search Field Groups"
msgstr "جستجوی گروه های زمینه"
#: acf.php:370
#: acf.php:371
msgid "No Field Groups found"
msgstr "گروه زمینه ای یافت نشد"
#: acf.php:371
#: acf.php:372
msgid "No Field Groups found in Trash"
msgstr "گروه زمینه ای در زباله دان یافت نشد"
#: acf.php:394 includes/admin/admin-field-group.php:220
#: acf.php:395 includes/admin/admin-field-group.php:220
#: includes/admin/admin-field-groups.php:530
#: pro/fields/class-acf-field-clone.php:811
msgid "Fields"
msgstr "زمینه ها"
#: acf.php:395
#: acf.php:396
msgid "Field"
msgstr "زمینه"
#: acf.php:397
#: acf.php:398
msgid "Add New Field"
msgstr "زمینه جدید"
#: acf.php:398
#: acf.php:399
msgid "Edit Field"
msgstr "ویرایش زمینه"
#: acf.php:399 includes/admin/views/field-group-fields.php:41
#: acf.php:400 includes/admin/views/field-group-fields.php:41
msgid "New Field"
msgstr "زمینه جدید"
#: acf.php:400
#: acf.php:401
msgid "View Field"
msgstr "نمایش زمینه"
#: acf.php:401
#: acf.php:402
msgid "Search Fields"
msgstr "جستجوی گروه های زمینه"
#: acf.php:402
#: acf.php:403
msgid "No Fields found"
msgstr "گروه زمینه ای یافت نشد"
#: acf.php:403
#: acf.php:404
msgid "No Fields found in Trash"
msgstr "گروه زمینه ای در زباله دان یافت نشد"
#: acf.php:442 includes/admin/admin-field-group.php:402
#: acf.php:443 includes/admin/admin-field-group.php:402
#: includes/admin/admin-field-groups.php:587
msgid "Inactive"
msgstr "غیرفعال"
#: acf.php:447
#: acf.php:448
#, php-format
msgid "Inactive <span class=\"count\">(%s)</span>"
msgid_plural "Inactive <span class=\"count\">(%s)</span>"
msgstr[0] "غیرفعال <span class=\"count\">(%s)</span>"
msgstr[1] "غیرفعال <span class=\"count\">(%s)</span>"
#: includes/acf-field-functions.php:827 includes/admin/admin-field-group.php:178
#: includes/acf-field-functions.php:828 includes/admin/admin-field-group.php:178
msgid "(no label)"
msgstr "(بدون برچسب)"
#: includes/acf-field-group-functions.php:813
#: includes/acf-field-group-functions.php:816
#: includes/admin/admin-field-group.php:180
msgid "copy"
msgstr "کپی"
@ -192,7 +192,7 @@ msgstr "(این گزینه)"
#: includes/admin/views/field-group-field-conditional-logic.php:151
#: includes/admin/views/field-group-locations.php:29
#: includes/admin/views/html-location-group.php:3
#: includes/api/api-helpers.php:3982
#: includes/api/api-helpers.php:3862
msgid "or"
msgstr "یا"
@ -330,7 +330,7 @@ msgstr "تکثیر این زمینه"
#: includes/admin/admin-field-groups.php:686
#: includes/admin/admin-field-groups.php:702
#: includes/admin/views/field-group-field.php:46
#: pro/fields/class-acf-field-flexible-content.php:556
#: pro/fields/class-acf-field-flexible-content.php:557
msgid "Duplicate"
msgstr "تکثیر"
@ -518,8 +518,8 @@ msgid "Add rule group"
msgstr "افزودن گروه قانون"
#: includes/admin/views/field-group-field.php:38
#: pro/fields/class-acf-field-flexible-content.php:409
#: pro/fields/class-acf-field-repeater.php:294
#: pro/fields/class-acf-field-flexible-content.php:410
#: pro/fields/class-acf-field-repeater.php:299
msgid "Drag to reorder"
msgstr "گرفتن و کشیدن برای مرتب سازی"
@ -553,7 +553,7 @@ msgid "Delete field"
msgstr "حذف زمینه"
#: includes/admin/views/field-group-field.php:48
#: pro/fields/class-acf-field-flexible-content.php:555
#: pro/fields/class-acf-field-flexible-content.php:556
msgid "Delete"
msgstr "حذف"
@ -618,13 +618,13 @@ msgstr "ترتیب"
#: includes/fields/class-acf-field-checkbox.php:420
#: includes/fields/class-acf-field-radio.php:311
#: includes/fields/class-acf-field-select.php:433
#: pro/fields/class-acf-field-flexible-content.php:581
#: pro/fields/class-acf-field-flexible-content.php:582
msgid "Label"
msgstr "برچسب زمینه"
#: includes/admin/views/field-group-fields.php:6
#: includes/fields/class-acf-field-taxonomy.php:939
#: pro/fields/class-acf-field-flexible-content.php:595
#: pro/fields/class-acf-field-flexible-content.php:596
msgid "Name"
msgstr "نام"
@ -1227,42 +1227,42 @@ msgstr "بزرگ"
msgid "Full Size"
msgstr "اندازه کامل"
#: includes/api/api-helpers.php:1823 includes/api/api-term.php:147
#: includes/api/api-helpers.php:1775 includes/api/api-term.php:147
#: pro/fields/class-acf-field-clone.php:996
msgid "(no title)"
msgstr "(بدون عنوان)"
#: includes/api/api-helpers.php:3903
#: includes/api/api-helpers.php:3783
#, php-format
msgid "Image width must be at least %dpx."
msgstr "عرض تصویر باید حداقل %d پیکسل باشد."
#: includes/api/api-helpers.php:3908
#: includes/api/api-helpers.php:3788
#, php-format
msgid "Image width must not exceed %dpx."
msgstr "عرض تصویر نباید از %d پیکسل بیشتر باشد."
#: includes/api/api-helpers.php:3924
#: includes/api/api-helpers.php:3804
#, php-format
msgid "Image height must be at least %dpx."
msgstr "ارتفاع فایل باید حداقل %d پیکسل باشد."
#: includes/api/api-helpers.php:3929
#: includes/api/api-helpers.php:3809
#, php-format
msgid "Image height must not exceed %dpx."
msgstr "ارتفاع تصویر نباید از %d پیکسل بیشتر باشد."
#: includes/api/api-helpers.php:3947
#: includes/api/api-helpers.php:3827
#, php-format
msgid "File size must be at least %s."
msgstr "حجم فایل باید حداقل %s باشد."
#: includes/api/api-helpers.php:3952
#: includes/api/api-helpers.php:3832
#, php-format
msgid "File size must must not exceed %s."
msgstr "حجم فایل ها نباید از %s بیشتر باشد."
#: includes/api/api-helpers.php:3986
#: includes/api/api-helpers.php:3866
#, php-format
msgid "File type must be %s."
msgstr "نوع فایل باید %s باشد."
@ -1429,9 +1429,9 @@ msgstr "جی کوئری"
#: includes/fields/class-acf-field-group.php:474
#: includes/fields/class-acf-field-radio.php:290
#: pro/fields/class-acf-field-clone.php:843
#: pro/fields/class-acf-field-flexible-content.php:552
#: pro/fields/class-acf-field-flexible-content.php:601
#: pro/fields/class-acf-field-repeater.php:443
#: pro/fields/class-acf-field-flexible-content.php:553
#: pro/fields/class-acf-field-flexible-content.php:602
#: pro/fields/class-acf-field-repeater.php:448
msgid "Layout"
msgstr "چیدمان"
@ -1920,6 +1920,7 @@ msgstr "محدود کردن انتخاب کتابخانه چندرسانه ای"
#: includes/locations/class-acf-location-user-role.php:111
#: includes/locations/class-acf-location-widget.php:83
#: pro/fields/class-acf-field-gallery.php:679
#: pro/locations/class-acf-location-block.php:79
msgid "All"
msgstr "همه"
@ -2014,7 +2015,7 @@ msgid "Group"
msgstr "گروه"
#: includes/fields/class-acf-field-group.php:459
#: pro/fields/class-acf-field-repeater.php:379
#: pro/fields/class-acf-field-repeater.php:384
msgid "Sub Fields"
msgstr "زمینه‌های زیرمجموعه"
@ -2025,22 +2026,23 @@ msgstr "استایل جهت نمایش فیلد انتخابی"
#: includes/fields/class-acf-field-group.php:480
#: pro/fields/class-acf-field-clone.php:849
#: pro/fields/class-acf-field-flexible-content.php:612
#: pro/fields/class-acf-field-repeater.php:451
#: pro/fields/class-acf-field-flexible-content.php:613
#: pro/fields/class-acf-field-repeater.php:456
#: pro/locations/class-acf-location-block.php:27
msgid "Block"
msgstr "بلوک"
#: includes/fields/class-acf-field-group.php:481
#: pro/fields/class-acf-field-clone.php:850
#: pro/fields/class-acf-field-flexible-content.php:611
#: pro/fields/class-acf-field-repeater.php:450
#: pro/fields/class-acf-field-flexible-content.php:612
#: pro/fields/class-acf-field-repeater.php:455
msgid "Table"
msgstr "جدول"
#: includes/fields/class-acf-field-group.php:482
#: pro/fields/class-acf-field-clone.php:851
#: pro/fields/class-acf-field-flexible-content.php:613
#: pro/fields/class-acf-field-repeater.php:452
#: pro/fields/class-acf-field-flexible-content.php:614
#: pro/fields/class-acf-field-repeater.php:457
msgid "Row"
msgstr "سطر"
@ -2956,6 +2958,14 @@ msgstr "بررسی دوباره"
msgid "Upgrade Notice"
msgstr "نکات به روزرسانی"
#: pro/blocks.php:371
msgid "Switch to Edit"
msgstr "حالت ویرایش"
#: pro/blocks.php:372
msgid "Switch to Preview"
msgstr "حالت پیش‌نمایش"
#: pro/fields/class-acf-field-clone.php:25
msgctxt "noun"
msgid "Clone"
@ -3014,13 +3024,13 @@ msgstr "تمام فیلدها از %s گروه فیلد"
#: pro/fields/class-acf-field-flexible-content.php:31
#: pro/fields/class-acf-field-repeater.php:193
#: pro/fields/class-acf-field-repeater.php:463
#: pro/fields/class-acf-field-repeater.php:468
msgid "Add Row"
msgstr "سطر جدید"
#: pro/fields/class-acf-field-flexible-content.php:73
#: pro/fields/class-acf-field-flexible-content.php:923
#: pro/fields/class-acf-field-flexible-content.php:1005
#: pro/fields/class-acf-field-flexible-content.php:924
#: pro/fields/class-acf-field-flexible-content.php:1006
msgid "layout"
msgid_plural "layouts"
msgstr[0] "طرح‌ها"
@ -3031,8 +3041,8 @@ msgid "layouts"
msgstr "طرح ها"
#: pro/fields/class-acf-field-flexible-content.php:77
#: pro/fields/class-acf-field-flexible-content.php:922
#: pro/fields/class-acf-field-flexible-content.php:1004
#: pro/fields/class-acf-field-flexible-content.php:923
#: pro/fields/class-acf-field-flexible-content.php:1005
msgid "This field requires at least {min} {label} {identifier}"
msgstr "این زمینه لازم دارد {min} {label} {identifier}"
@ -3057,57 +3067,57 @@ msgstr "زمینه محتوای انعطاف پذیر حداقل به یک طر
msgid "Click the \"%s\" button below to start creating your layout"
msgstr "روی دکمه \"%s\" دز زیر کلیک کنید تا چیدمان خود را بسازید"
#: pro/fields/class-acf-field-flexible-content.php:412
#: pro/fields/class-acf-field-flexible-content.php:413
msgid "Add layout"
msgstr "طرح جدید"
#: pro/fields/class-acf-field-flexible-content.php:413
#: pro/fields/class-acf-field-flexible-content.php:414
msgid "Remove layout"
msgstr "حذف طرح"
#: pro/fields/class-acf-field-flexible-content.php:414
#: pro/fields/class-acf-field-repeater.php:296
#: pro/fields/class-acf-field-flexible-content.php:415
#: pro/fields/class-acf-field-repeater.php:301
msgid "Click to toggle"
msgstr "کلیک برای انتخاب"
#: pro/fields/class-acf-field-flexible-content.php:554
#: pro/fields/class-acf-field-flexible-content.php:555
msgid "Reorder Layout"
msgstr "ترتیب بندی طرح ها"
#: pro/fields/class-acf-field-flexible-content.php:554
#: pro/fields/class-acf-field-flexible-content.php:555
msgid "Reorder"
msgstr "مرتب سازی"
#: pro/fields/class-acf-field-flexible-content.php:555
#: pro/fields/class-acf-field-flexible-content.php:556
msgid "Delete Layout"
msgstr "حذف طرح"
#: pro/fields/class-acf-field-flexible-content.php:556
#: pro/fields/class-acf-field-flexible-content.php:557
msgid "Duplicate Layout"
msgstr "تکثیر طرح"
#: pro/fields/class-acf-field-flexible-content.php:557
#: pro/fields/class-acf-field-flexible-content.php:558
msgid "Add New Layout"
msgstr "افزودن طرح جدید"
#: pro/fields/class-acf-field-flexible-content.php:628
#: pro/fields/class-acf-field-flexible-content.php:629
msgid "Min"
msgstr "حداقل"
#: pro/fields/class-acf-field-flexible-content.php:641
#: pro/fields/class-acf-field-flexible-content.php:642
msgid "Max"
msgstr "حداکثر"
#: pro/fields/class-acf-field-flexible-content.php:668
#: pro/fields/class-acf-field-repeater.php:459
#: pro/fields/class-acf-field-flexible-content.php:669
#: pro/fields/class-acf-field-repeater.php:464
msgid "Button Label"
msgstr "متن دکمه"
#: pro/fields/class-acf-field-flexible-content.php:677
#: pro/fields/class-acf-field-flexible-content.php:678
msgid "Minimum Layouts"
msgstr "حداقل تعداد طرح ها"
#: pro/fields/class-acf-field-flexible-content.php:686
#: pro/fields/class-acf-field-flexible-content.php:687
msgid "Maximum Layouts"
msgstr "حداکثر تعداد طرح ها"
@ -3184,7 +3194,7 @@ msgid "Prepend to the beginning"
msgstr "افزودن قبل از"
#: pro/fields/class-acf-field-repeater.php:65
#: pro/fields/class-acf-field-repeater.php:656
#: pro/fields/class-acf-field-repeater.php:661
msgid "Minimum rows reached ({min} rows)"
msgstr "مقادیر به حداکثر رسیده اند ( {min} سطر )"
@ -3192,27 +3202,27 @@ msgstr "مقادیر به حداکثر رسیده اند ( {min} سطر )"
msgid "Maximum rows reached ({max} rows)"
msgstr "مقادیر به حداکثر رسیده اند ( {max} سطر )"
#: pro/fields/class-acf-field-repeater.php:333
#: pro/fields/class-acf-field-repeater.php:338
msgid "Add row"
msgstr "افزودن سطر"
#: pro/fields/class-acf-field-repeater.php:334
#: pro/fields/class-acf-field-repeater.php:339
msgid "Remove row"
msgstr "حذف سطر"
#: pro/fields/class-acf-field-repeater.php:412
#: pro/fields/class-acf-field-repeater.php:417
msgid "Collapsed"
msgstr "جمع شده"
#: pro/fields/class-acf-field-repeater.php:413
#: pro/fields/class-acf-field-repeater.php:418
msgid "Select a sub field to show when row is collapsed"
msgstr "یک زمینه زیرمجموعه را انتخاب کنید تا زمان بسته شدن طر نمایش داده شود"
#: pro/fields/class-acf-field-repeater.php:423
#: pro/fields/class-acf-field-repeater.php:428
msgid "Minimum Rows"
msgstr "حداقل تعداد سطرها"
#: pro/fields/class-acf-field-repeater.php:433
#: pro/fields/class-acf-field-repeater.php:438
msgid "Maximum Rows"
msgstr "حداکثر تعداد سطرها"
@ -3238,6 +3248,22 @@ msgstr ""
"برای به روزرسانی لطفا کد لایسنس را وارد کنید. <a href=\"%s\">بروزرسانی</a>. <a "
"href=\"%s\">قیمت ها</a>."
#: tests/basic/test-blocks.php:13
msgid "Testimonial"
msgstr "توصیه‌نامه"
#: tests/basic/test-blocks.php:14
msgid "A custom testimonial block."
msgstr "بلوک سفارشی توصیه‌نامه (Testimonial)"
#: tests/basic/test-blocks.php:40
msgid "Slider"
msgstr "اسلایدر"
#: tests/basic/test-blocks.php:41
msgid "A custom gallery slider."
msgstr "اسلایدر گالری سفارشی"
#. Plugin URI of the plugin/theme
msgid "https://www.advancedcustomfields.com/"
msgstr "https://www.advancedcustomfields.com/"

Binary file not shown.

View File

@ -3,7 +3,7 @@ msgstr ""
"Project-Id-Version: Advanced Custom Fields Pro v5.2.9\n"
"Report-Msgid-Bugs-To: http://support.advancedcustomfields.com\n"
"POT-Creation-Date: 2017-06-27 15:28+1000\n"
"PO-Revision-Date: 2018-02-06 10:06+1000\n"
"PO-Revision-Date: 2019-05-15 09:55+1000\n"
"Last-Translator: Elliot Condon <e@elliotcondon.com>\n"
"Language-Team: Swedish\n"
"Language: sv_SE\n"
@ -1869,7 +1869,7 @@ msgstr "Specificera stilen för att rendera valda fält"
#: pro/fields/class-acf-field-flexible-content.php:629
#: pro/fields/class-acf-field-repeater.php:522
msgid "Block"
msgstr "Grupp"
msgstr "Block"
#: includes/fields/class-acf-field-group.php:492
#: pro/fields/class-acf-field-clone.php:896

View File

@ -1389,7 +1389,7 @@
attachment = attachment.attributes;
// preview size
var url = acf.isget(attachment, 'sizes', 'medium', 'url');
var url = acf.isget(attachment, 'sizes', this.get('preview_size'), 'url');
if( url !== null ) {
attachment.url = url;
}

File diff suppressed because one or more lines are too long

View File

@ -575,6 +575,7 @@ function acf_parse_save_blocks_callback( $matches ) {
// Prevent wp_targeted_link_rel from corrupting JSON.
remove_filter( 'content_save_pre', 'wp_filter_post_kses' );
remove_filter( 'content_save_pre', 'wp_targeted_link_rel' );
remove_filter( 'content_save_pre', 'balanceTags', 50 );
/**
* Filteres the block attributes before saving.

View File

@ -25,6 +25,9 @@ class acf_field_gallery extends acf_field {
$this->label = __("Gallery",'acf');
$this->category = 'content';
$this->defaults = array(
'return_format' => 'array',
'preview_size' => 'medium',
'insert' => 'append',
'library' => 'all',
'min' => 0,
'max' => 0,
@ -35,7 +38,6 @@ class acf_field_gallery extends acf_field {
'max_height' => 0,
'max_size' => 0,
'mime_types' => '',
'insert' => 'append'
);
@ -409,44 +411,6 @@ class acf_field_gallery extends acf_field {
}
/*
* get_attachments
*
* This function will return an array of attachments for a given field value
*
* @type function
* @date 13/06/2014
* @since 5.0.0
*
* @param $value (array)
* @return $value
*/
function get_attachments( $value ) {
// bail early if no value
if( empty($value) ) return false;
// force value to array
$post__in = acf_get_array( $value );
// get posts
$posts = acf_get_posts(array(
'post_type' => 'attachment',
'post__in' => $post__in,
'update_post_meta_cache' => true
));
// return
return $posts;
}
/*
* render_field()
*
@ -461,15 +425,15 @@ class acf_field_gallery extends acf_field {
function render_field( $field ) {
// enqueue
// Enqueue uploader assets.
acf_enqueue_uploader();
// vars
$atts = array(
// Control attributes.
$attrs = array(
'id' => $field['id'],
'class' => "acf-gallery {$field['class']}",
'data-library' => $field['library'],
'data-preview_size' => $field['preview_size'],
'data-min' => $field['min'],
'data-max' => $field['max'],
'data-mime_types' => $field['mime_types'],
@ -477,86 +441,68 @@ class acf_field_gallery extends acf_field {
'data-columns' => 4
);
// set gallery height
// Set gallery height with deafult of 400px and minimum of 200px.
$height = acf_get_user_setting('gallery_height', 400);
$height = max( $height, 200 ); // minimum height is 200
$atts['style'] = "height:{$height}px";
$height = max( $height, 200 );
$attrs['style'] = "height:{$height}px";
// Load attachments.
$attachments = array();
if( $field['value'] ) {
// get posts
$value = $this->get_attachments( $field['value'] );
// Clean value into an array of IDs.
$attachment_ids = array_map('intval', acf_array($field['value']));
// Find posts in database (ensures all results are real).
$posts = acf_get_posts(array(
'post_type' => 'attachment',
'post__in' => $attachment_ids,
'update_post_meta_cache' => true,
'update_post_term_cache' => false
));
// Load attatchment data for each post.
$attachments = array_map('acf_get_attachment', $posts);
}
?>
<div <?php acf_esc_attr_e($atts); ?>>
<div class="acf-hidden">
<?php acf_hidden_input(array( 'name' => $field['name'], 'value' => '' )); ?>
</div>
<div <?php acf_esc_attr_e($attrs); ?>>
<input type="hidden" name="<?php echo esc_attr($field['name']); ?>" value="" />
<div class="acf-gallery-main">
<div class="acf-gallery-attachments">
<?php if( $attachments ): ?>
<?php foreach( $attachments as $i => $attachment ):
<?php if( $value ): ?>
<?php foreach( $value as $i => $v ):
// bail early if no value
if( !$v ) continue;
// vars
$a = array(
'ID' => $v->ID,
'title' => $v->post_title,
'filename' => wp_basename($v->guid),
'type' => acf_maybe_get(explode('/', $v->post_mime_type), 0),
'class' => 'acf-gallery-attachment'
);
// thumbnail
$thumbnail = acf_get_post_thumbnail($a['ID'], 'medium');
// remove filename if is image
if( $a['type'] == 'image' ) $a['filename'] = '';
// class
$a['class'] .= ' -' . $a['type'];
if( $thumbnail['type'] == 'icon' ) {
$a['class'] .= ' -icon';
}
// Vars
$a_id = $attachment['ID'];
$a_title = $attachment['title'];
$a_type = $attachment['type'];
$a_filename = $attachment['filename'];
$a_class = "acf-gallery-attachment -{$a_type}";
// Get thumbnail.
$a_thumbnail = acf_get_post_thumbnail($a_id, $field['preview_size']);
$a_class .= ($a_thumbnail['type'] === 'icon') ? ' -icon' : '';
?>
<div class="<?php echo $a['class']; ?>" data-id="<?php echo $a['ID']; ?>">
<?php acf_hidden_input(array( 'name' => $field['name'].'[]', 'value' => $a['ID'] )); ?>
<div class="<?php echo esc_attr($a_class); ?>" data-id="<?php echo esc_attr($a_id); ?>">
<input type="hidden" name="<?php echo esc_attr($field['name']); ?>[]" value="<?php echo esc_attr($a_id); ?>" />
<div class="margin">
<div class="thumbnail">
<img src="<?php echo $thumbnail['url']; ?>" alt="" title="<?php echo $a['title']; ?>"/>
<img src="<?php echo esc_url($a_thumbnail['url']); ?>" alt="" />
</div>
<?php if( $a['filename'] ): ?>
<div class="filename"><?php echo acf_get_truncated($a['filename'], 30); ?></div>
<?php if( $a_type !== 'image' ): ?>
<div class="filename"><?php echo acf_get_truncated( $a_filename, 30 ); ?></div>
<?php endif; ?>
</div>
<div class="actions">
<a class="acf-icon -cancel dark acf-gallery-remove" href="#" data-id="<?php echo $a['ID']; ?>" title="<?php _e('Remove', 'acf'); ?>"></a>
<a class="acf-icon -cancel dark acf-gallery-remove" href="#" data-id="<?php echo esc_attr($a_id); ?>" title="<?php _e('Remove', 'acf'); ?>"></a>
</div>
</div>
<?php endforeach; ?>
<?php endif; ?>
</div>
<div class="acf-gallery-toolbar">
<ul class="acf-hl">
<li>
<a href="#" class="acf-button button button-primary acf-gallery-add"><?php _e('Add to gallery', 'acf'); ?></a>
@ -571,32 +517,23 @@ class acf_field_gallery extends acf_field {
</select>
</li>
</ul>
</div>
</div>
<div class="acf-gallery-side">
<div class="acf-gallery-side-inner">
<div class="acf-gallery-side-data"></div>
<div class="acf-gallery-toolbar">
<ul class="acf-hl">
<li>
<a href="#" class="acf-button button acf-gallery-close"><?php _e('Close', 'acf'); ?></a>
</li>
<li class="acf-fr">
<a class="acf-button button button-primary acf-gallery-update" href="#"><?php _e('Update', 'acf'); ?></a>
</li>
</ul>
<div class="acf-gallery-side-inner">
<div class="acf-gallery-side-data"></div>
<div class="acf-gallery-toolbar">
<ul class="acf-hl">
<li>
<a href="#" class="acf-button button acf-gallery-close"><?php _e('Close', 'acf'); ?></a>
</li>
<li class="acf-fr">
<a class="acf-button button button-primary acf-gallery-update" href="#"><?php _e('Update', 'acf'); ?></a>
</li>
</ul>
</div>
</div>
</div>
</div>
</div>
<?php
@ -636,25 +573,29 @@ class acf_field_gallery extends acf_field {
}
// min
// return_format
acf_render_field_setting( $field, array(
'label' => __('Minimum Selection','acf'),
'label' => __('Return Format','acf'),
'instructions' => '',
'type' => 'number',
'name' => 'min'
'type' => 'radio',
'name' => 'return_format',
'layout' => 'horizontal',
'choices' => array(
'array' => __("Image Array",'acf'),
'url' => __("Image URL",'acf'),
'id' => __("Image ID",'acf')
)
));
// max
// preview_size
acf_render_field_setting( $field, array(
'label' => __('Maximum Selection','acf'),
'label' => __('Preview Size','acf'),
'instructions' => '',
'type' => 'number',
'name' => 'max'
'type' => 'select',
'name' => 'preview_size',
'choices' => acf_get_image_sizes()
));
// insert
acf_render_field_setting( $field, array(
'label' => __('Insert','acf'),
@ -667,7 +608,6 @@ class acf_field_gallery extends acf_field {
)
));
// library
acf_render_field_setting( $field, array(
'label' => __('Library','acf'),
@ -681,6 +621,21 @@ class acf_field_gallery extends acf_field {
)
));
// min
acf_render_field_setting( $field, array(
'label' => __('Minimum Selection','acf'),
'instructions' => '',
'type' => 'number',
'name' => 'min'
));
// max
acf_render_field_setting( $field, array(
'label' => __('Maximum Selection','acf'),
'instructions' => '',
'type' => 'number',
'name' => 'max'
));
// min
acf_render_field_setting( $field, array(
@ -739,7 +694,6 @@ class acf_field_gallery extends acf_field {
'_append' => 'max_width'
));
// allowed type
acf_render_field_setting( $field, array(
'label' => __('Allowed file types','acf'),
@ -747,7 +701,6 @@ class acf_field_gallery extends acf_field {
'type' => 'text',
'name' => 'mime_types',
));
}
@ -769,25 +722,54 @@ class acf_field_gallery extends acf_field {
function format_value( $value, $post_id, $field ) {
// bail early if no value
if( empty($value) ) return false;
// get posts
$posts = $this->get_attachments($value);
// update value to include $post
foreach( array_keys($posts) as $i ) {
$posts[ $i ] = acf_get_attachment( $posts[ $i ] );
// Bail early if no value.
if( !$value ) {
return false;
}
// Clean value into an array of IDs.
$attachment_ids = array_map('intval', acf_array($value));
// return
return $posts;
// Find posts in database (ensures all results are real).
$posts = acf_get_posts(array(
'post_type' => 'attachment',
'post__in' => $attachment_ids,
'update_post_meta_cache' => true,
'update_post_term_cache' => false
));
// Bail early if no posts found.
if( !$posts ) {
return false;
}
// Format values using field settings.
$value = array();
foreach( $posts as $post ) {
// Return object.
if( $field['return_format'] == 'object' ) {
$item = $post;
// Return array.
} elseif( $field['return_format'] == 'array' ) {
$item = acf_get_attachment( $post );
// Return URL.
} elseif( $field['return_format'] == 'url' ) {
$item = wp_get_attachment_url( $post->ID );
// Return ID.
} else {
$item = $post->ID;
}
// Append item.
$value[] = $item;
}
// Return.
return $value;
}

View File

@ -67,6 +67,19 @@ From your WordPress dashboard
== Changelog ==
= 5.8.1 =
*Release Date - 3 June 2019*
* New - Added "Preview Size" and "Return Format" settings to the Gallery field.
* Tweak - Improved metabox styling for Gutenberg.
* Tweak - Changed default "Preview Size" to medium for the Image field.
* Fix - Fixed bug in media modal causing the primary button text to disappear after editing an image.
* Fix - Fixed bug preventing the TinyMCE Advanced plugin from adding `< p >` tags.
* Fix - Fixed bug where HTML choices were not visible in conditional logic dropdown.
* Fix - Fixed bug causing incorrect order of imported/synced flexible content sub fields.
* i18n - Updated German translation thanks to Ralf Koller.
* i18n - Updated Persian translation thanks to Majix.
= 5.8.0 =
*Release Date - 8 May 2019*
@ -183,369 +196,6 @@ From your WordPress dashboard
* Dev - Reordered various actions and filters for more usefulness.
* i18n - Updated Polish language thanks to Dariusz Zielonka
= 5.7.5 =
*Release Date - 6 September 2018*
* Fix - Fixed bug causing multisite login redirect issues.
* Fix - Fixed bug causing validation issues in older versions of Firefox.
* Fix - Fixed bug causing duplicate Select2 instances when adding a widget via drag/drop.
* Dev - Improved WPML compatibility by using `$sitepress->get_current_language()` instead of `ICL_LANGUAGE_CODE`.
* Dev - Improved validation JS with new Validator model and logic.
= 5.7.4 =
*Release Date - 30 August 2018*
* Fix - Fixed bug causing field groups to disappear when selecting a taxonomy term with WPML active.
* Tweak - Added more Dark Mode styles.
* Tweak - Improved DB upgrade prompt, functions and AJAX logic.
* Tweak - Improved the "What's New" admin page seen after DB Upgrade.
* Dev - Added new location rules filters.
= 5.7.3 =
*Release Date - 20 August 2018*
* New - Added Dark Mode styles for the [Dark Mode Plugin](https://en-au.wordpress.org/plugins/dark-mode/).
* New - Added "Value Contains" condition to the Select field type.
* New - Added support for the WooCommerce product type dropdown to trigger "update metaboxes".
* Tweak - Improved acf.screen model responsible for "updating metaboxes" when changing post data.
* Tweak - Removed user fields from the multisite "Add New User" page.
* Fix - Fixed bug preventing some tinymce customizations from working.
* Fix - Fixed JS bug throwing "preference" error in console.
* Dev - Added action 'acf/enqueue_uploader' triggered after the hidden "ACF Content" editor is rendered.
= 5.7.2 =
*Release Date - 6 August 2018*
* Fix - Fixed bug preventing the Google Maps Field address from being customized.
* Fix - Improved logic to request and cache plugin update information.
* Fix - Fixed bug preventing JS initialization when editing widgets in accessibility mode.
* Fix - Added missing $parent argument to term_exists() function when adding a new term via taxonomy field popup.
* Fix - Fixed bug where nested Group Fields did not delete their values.
* Fix - Fixed JS error thrown by localStorage if cookies are not enabled.
* Dev - Bumped minimum WP version requirement to 4.4.
* Dev - Added action 'wp_nav_menu_item_custom_fields' for compatibility with other plugins modifying the menu walker class.
* Dev - Added 'multiple' to the allowed attributes for an email field.
* Dev - Added new ACF_Ajax class for upcoming features.
= 5.7.1 =
* Core: Minor fixes and improvements
= 5.7.0 =
* Core: Major JavaScript updates
* Core: Improved conditional logic with new types and more supported fields
* Core: Improved localization and internationalization
* Repeater field: Improved logic that remembers collapsed row states
* Repeater field: Added support to collapse multiple rows (hold shift)
* API: Improved lookup to find fields without a reference value
* Language: Added Croatian translation - Thanks to Vlado Bosnjak
* Language: Updated Italian translation - thanks to Davide Pantè
* Language: Updated Romanian translation - thanks to Ionut Staicu
* Language: Updated German translation - thanks to Ralf Koller
* Language: Updated Arabic translation - thanks to Karim Ramadan
* Language: Updated Portuguese translation - thanks to Pedro Mendonça
= 5.6.10 =
* Core: Minor fixes and improvements
= 5.6.9 =
* User field: Added new 'Return Format' setting (Array, Object, ID)
* Core: Added basic compatibility with Gutenberg - values now save
* Core: Fixed bug affecting the loading of fields on new Menu Items
* Core: Removed private ('show_ui' => false) post types from the 'Post Type' location rule choices
* Core: Minor fixes and improvements
* Language: Updated French translation - thanks to Maxime Bernard-Jacquet
= 5.6.8 =
* API: Fixed bug causing have_rows() to fail with PHP 7.2
* Core: Fixed bug causing "Add new term" form to hide after submit
* Core: Minor fixes and improvements
* Language: Updated German translation - thanks to Ralf Koller
* Language: Updated Portuguese translation - thanks to Pedro Mendonça
* Language: Updated Arabic translation - thanks to Karim Ramadan
* Language: Updated Spanish translation - thanks to Luis Rull Muñoz
* Language: Updated Persian translation - thanks to Majix
= 5.6.7 =
* Fixed an assortment of bugs found in 5.6.6
= 5.6.6 =
* Accordion field: Added new field type
* Tab field: Added logic to remember active tabs
* WYSIWYG field: Fixed JS error in quicktags initialization
* Core: Fixed issue preventing conditional logic for menu item fields
* Core: Fixed issue preventing JS initialization for newly added menu items.
* Core: Allow whitespace in input value (previously trimmed)
* Core: Minor fixes and improvements
* Language: Updated Italian translation - thanks to Davide Pantè
* Language: Updated Brazilian Portuguese translation - thanks to Rafael Ribeiro
* Language: Updated Dutch translation - thanks to Derk Oosterveld
* Language: Updated Portuguese translation - thanks to Pedro Mendonça
* Language: Updated Persian translation - thanks to Kamel Kimiaei
* Language: Updated Swiss German translation - thanks to Raphael Hüni
* Language: Updated Arabic translation - thanks to Karim Ramadan
= 5.6.5 =
* API: Added new 'kses' setting to the `acf_form()` function
* Core: Added new 'Admin Tools' framework (includes design refresh)
* Core: Minor fixes and improvements
* Language: Update Ukrainian translation - thanks to Jurko Chervony
* Language: Update Russian translation - thanks to Andriy Toniyevych
* Language: Update Hebrew translation - thanks to Itamar Megged
= 5.6.4 =
* Google Map field: Fixed bug causing invalid url to JavaScript library
* WYSIWYG field: Fixed minor z-index and drag/drop bugs
* Group field: Fixed bug causing incorrect export settings
* Core: Fixed bug in 'Post Taxonomy' location rule ignoring selected terms during AJAX callback
* Core: Fixed bug preventing a draft to validate with required fields
* Language: Updated Italian translation - thanks to Davide Pantè
* Language: Update Turkish translation - thanks to Emre Erkan
* Language: Updated Chinese translation - thanks to Wang Hao
* Language: Update Hebrew translation - thanks to Itamar Megged
= 5.6.3 =
* Button Group field: Added new field type
* Range field: Added missing 'step' attribute to number input
* Range field: Added width to number input based on max setting
* Basic fields: Added missing 'required' attribute to inputs
* Basic fields: Removed empty attributes from inputs
* API: Fixed `get_fields()` bug ignoring fields starting with an underscore
* Core: Minor fixes and improvements
* Language: Updated Portuguese translation - thanks to Pedro Mendonça
* Language: Updated French translation - thanks to Maxime Bernard-Jacquet
* Language: Updated Finnish translation - thanks to Sauli Rajala
* Language: Updated German translation - thanks to Ralf Koller
= 5.6.2 =
* Range field: Added new field type
* Clone field: Fixed bug causing value update issues for 'seamless' + widgets / nave menu items
* Location: Added parent theme's post templates to 'post template' location rule
* Location: Fixed bug causing 'nav menu' location rule to fail during AJAX (add new item)
* Core: Fixed PHP errors in customizer when editing non ACF panels
* Core: Fixed bug casing backslash character to break fields / field groups
* Core: Many minor bug fixes
* Language: Updated Romanian translation - thanks to Ionut Staicu
* Language: Updated Italian translation - thanks to Davide Pantè
* Language: Update Turkish translation - thanks to Emre Erkan
* Language: Updated Russian translation - Thanks to Алекс Яровиков
* Language: Updated French translation - Thanks to Julie Arrigoni
= 5.6.1 =
* Fixed an assortment of bugs found in 5.6.0
= 5.6.0 =
* Link field: Added new field type
* Group field: Added new field type
* API: Improved `have_rows()` function to work with clone and group field values
* Core: Added new location for Menus
* Core: Added new location for Menu Items
* Core: Added types to Attachment location rule - thanks to Jan Thomas
* Core: Added "Confirm Remove" tooltips
* Core: Updated Select2 JS library to v4
* Core: Minor fixes and improvements
= 5.5.14 =
* Core: Minor bug fixes
= 5.5.13 =
* Clone field: Improved 'Fields' setting to show all fields within a matching field group search
* Flexible Content field: Fixed bug causing 'layout_title' filter to fail when field is cloned
* Flexible Content field: Added missing 'translate_field' function
* WYSIWYG field: Fixed JS error when using CKEditor plugin
* Date Picker field: Improved 'Display Format' and 'Return Format' settings UI
* Time Picker field: Same as above
* Datetime Picker field: Same as above
* Core: Added new 'remove_wp_meta_box' setting
* Core: Added constants ACF, ACF_PRO, ACF_VERSION and ACF_PATH
* Core: Improved compatibility with Select2 v4 including sortable functionality
* Language: Updated Portuguese translation - thanks to Pedro Mendonça
= 5.5.12 =
* Tab field: Allowed HTML within field label to show in tab
* Core: Improved plugin update class
* Language: Updated Portuguese translation - thanks to Pedro Mendonça
* Language: Updated Brazilian Portuguese translation - thanks to Rafael Ribeiro
= 5.5.11 =
* Google Map field: Added new 'google_map_init' JS action
* Core: Minor fixes and improvements
* Language: Updated Swiss German translation - thanks to Raphael Hüni
* Language: Updated French translation - thanks to Maxime Bernard-Jacquet
= 5.5.10 =
* API: Added new functionality to the `acf_form()` function:
* - added new 'html_updated_message' setting
* - added new 'html_submit_button' setting
* - added new 'html_submit_spinner' setting
* - added new 'acf/pre_submit_form' filter run when form is successfully submit (before saving $_POST)
* - added new 'acf/submit_form' action run when form is successfully submit (after saving $_POST)
* - added new '%post_id%' replace string to the 'return' setting
* - added new encryption logic to prevent $_POST exploits
* - added new `acf_register_form()` function
* Core: Fixed bug preventing values being loaded on a new post/page preview
* Core: Fixed missing 'Bulk Actions' dropdown on sync screen when no field groups exist
* Core: Fixed bug ignoring PHP field groups if exists in JSON
* Core: Minor fixes and improvements
= 5.5.9 =
* Core: Fixed bug causing ACF4 PHP field groups to be ignored if missing key setting
= 5.5.8 =
* Flexible Content: Added logic to better 'clean up' data when re-ordering layouts
* oEmbed field: Fixed bug causing incorrect width and height settings in embed HTML
* Core: Fixed bug causing incorrect Select2 CSS version loading for WooCommerce 2.7
* Core: Fixed bug preventing 'min-height' style being applied to floating width fields
* Core: Added new JS 'init' actions for wysiwyg, date, datetime, time and select2 fields
* Core: Minor fixes and improvements
= 5.5.7 =
* Core: Fixed bug causing `get_field()` to return incorrect data for sub fields registered via PHP code.
= 5.5.6 =
* Core: Fixed bug causing license key to be ignored after changing url from http to https
* Core: Fixed Select2 (v4) bug where 'allow null' setting would not correctly save empty value
* Core: Added new 'acf/validate_field' filter
* Core: Added new 'acf/validate_field_group' filter
* Core: Added new 'acf/validate_post_id' filter
* Core: Added new 'row_index_offset' setting
* Core: Fixed bug causing value loading issues for a taxonomy term in WP < 4.4
* Core: Minor fixes and improvements
= 5.5.5 =
* File field: Fixed bug creating draft post when saving an empty value
* Image field: Fixed bug mentioned above
= 5.5.4 =
* File field: Added logic to 'connect' selected attachment to post (only if attachment is not 'connected')
* File field: Removed `filesize()` call causing performance issues with externally hosted attachments
* File field: Added AJAX validation to 'basic' uploader
* Image field: Added 'connect' logic mentioned above
* Image field: Added AJAX validation mentioned above
* True false field: Improved usability by allowing 'tab' key to focus element (use space or arrow keys to toggle)
* Gallery field: Fixed bug causing unsaved changes in sidebar to be lost when selecting another attachment
* API: Fixed `add_row()` and `add_sub_row()` return values (from true to new row index)
* Core: Improved `get_posts()` query speeds by setting 'update_cache' settings to false
* Core: Allowed 'instruction_placement' setting on 'widget' forms (previously set always to 'below fields')
* Core: Removed 'ACF PRO invalid license nag' and will include fix for 'protocol change' in next release
* Language: Updated French translation - thanks to Martial Parfait
= 5.5.3 =
* Options page: Fixed bug when using WPML in multiple tabs causing incorrect 'lang' to be used during save.
* Core: Added support with new `get_user_locale()` setting in WP 4.7
* Core: Improved efficiency of termmeta DB upgrade logic
* Core: Minor fixes and improvements
= 5.5.2 =
* Tab field: Fixed bug causing value loading issues for field's with the same name
* Repeater field: Fixed bug in 'collapsed' setting where field key was shown instead of field label
= 5.5.1 =
* Select field: Fixed bug preventing some field settings from being selected
* Date picker field: Improved compatibility with customized values
* Core: Added new 'enqueue_datepicker' setting which can be used to prevent the library from being enqueued
* Core: Added new 'enqueue_datetimepicker' setting which can be used to prevent the library from being enqueued
* Core: Minor fixes and improvements
= 5.5.0 =
* True False field: Added new 'ui' setting which renders as a toggle switch
* WYSIWYG field: Added new 'delay' setting which delays tinymce initialization until the field is clicked
* WYSIWYG field: Added compatibility for WP 4.7 toolbar buttons order
* Checkbox field: Added new 'allow_custom' and 'save_custom' settings allowing you to add custom choices
* Select field: Fixed bug where Select2 fields did not correctly use the allow null setting
* Clone field: Fixed bug causing save/load issues found when 2 sub fields clone in the same field/group.
* Flexible Content field: Improved popup style and validation messages
* Google Map field: Prevent scroll zoom
* Date picker field: Added better compatibility logic for custom 'date_format' setting found in version < 5.0.0
* API: acf_form() 'id' setting is now used as 'id' attribute in <form> element
* Options page: Fixed incorrect redirect URL from a sub options page
* Field group: Added new 'post_template' location rule (requires WP 4.7)
* Core: Added support for the wp_termmeta table (includes DB upgrade)
* Core: Added new 'select_2_version' setting which can be changed between 3 and 4
* Core: Added new 'enqueue_select2' setting which can be used to prevent the library from being enqueued
* Core: Added new 'enqueue_google_maps' setting which can be used to prevent the library from being enqueued
* Core: Minor fixes and improvements
* Language: Updated Portuguese translation - thanks to Pedro Mendonça
* Language: Updated Norwegian translation - thanks to Havard Grimelid
* Language: Updated Swedish translation - thanks to Jonathan de Jong
* Language: Updated German translation - thanks to Ralf Koller
* Language: Updated Italian translation - thanks to Davide Pantè
* Language: Updated Swiss German translation - thanks to Raphael Hüni
= 5.4.8 =
* Flexible Content field: Fixed bug in 'layout_title' filter preventing values being loaded correctly
= 5.4.7 =
* Time Picker field: Fixed bug preventing default time from being selected
* Date Picker field: Improved compatibility with unix timestamp values
* File field: Fixed validation bugs when used as a sub field (multiple selection)
* Select field: Fixed bug incorrectly allowing a disabled field (hidden by conditional logic) to save values
* API: Added new `add_sub_row()` function
* API: Added new `update_sub_row()` function
* API: Added new `delete_sub_row()` function
* Core: Fixed bug causing 'sync' issues with sub clone fields
* Core: Minor fixes and improvements
= 5.4.6 =
* Gallery field: Fixed bug where open sidebar fields were saved to post
* Flexible Content field: Fixed bug causing Google map render issue within collapsed layout
* Flexible Content field: Fixed bug during 'duplicate layout' where radio input values were lost
* API: Fixed bug causing `get_row(true)` to return incorrect values
* Core: Fixed bug where preview values did not load for a draft post
* Core: Added notice when PRO license fails to validate URL
* Core: Fixed bug where conditional logic would incorrectly enable select elements
* Core: Minor fixes and improvements
= 5.4.5 =
* API: Fixed bug in `acf_form()` where AJAX validation ignored 'post_title'
* API: Improved `update_field()` when saving a new value (when reference value does not yet exist)
* Core: Added search input & toggle to admin field groups list
* Core: Fixed bug where preview values did not load for a draft post
= 5.4.4 =
* WYSIWYG field: Fixed JS error when 'Disable the visual editor when writing' is checked
= 5.4.3 =
* WYSIWYG field: Fixed JS bug (since WP 4.6) causing conflicts with editor plugins
* Google Maps field: Fixed JS error conflict with Divi theme
* Radio field: Fixed bug (Chrome only) ignoring default values in cloned sub fields
* Core: Fixed `wp_get_sites()` deprecated error (since WP 4.6) shown in network admin
= 5.4.2 =
* API: Fixed bug preventing post_title and post_content values saving in `acf_form()`
= 5.4.1 =
* API: Fixed bug causing `get_fields('options')` to return false
* Core: Fixed bug causing `get_current_screen()` to throw PHP error
* Core: Fixed bug causing 'Preview Post' to load empty field values
= 5.4.0 =
* Clone field: Added new field type (https://www.advancedcustomfields.com/resources/clone/)
* Gallery field: Removed 'Preview Size' setting and improved UI
* Taxonomy field: Added compatibility to save/load terms to user object
* Select field: Added new 'Return Format' setting
* Radio field: Added new 'Return Format' setting
* Checkbox field: Added new 'Return Format' setting
* Page link field: Added new 'Allow Archives URLs' setting
* Core: Fixed plugin update bug delaying updates
* Core: Fixed bug when editing field settings in Chrome causing required setting to self toggle
* Core: Improved speed and fixed bugs when creating and restoring revisions
* Core: Minor fixes and improvements
* Language: Updated Portuguese translation - thanks to Pedro Mendonça
* Language: Updated Brazilian Portuguese translation - thanks to Augusto Simão
* Language: Updated Dutch translation - thanks to Derk Oosterveld
* Language: Updated Persian translation - thanks to Kamel
* Language: Updated German translation - thanks to Ralf Koller
* Language: Updated Swiss German translation - thanks to Raphael Hüni
View full changelog: https://www.advancedcustomfields.com/changelog/
[View the full changelog](https://www.advancedcustomfields.com/changelog/)
== Upgrade Notice ==
= 5.2.7 =
* Field class names have changed slightly in v5.2.7 from `field_type-{$type}` to `acf-field-{$type}`. This change was introduced to better optimize JS performance. The previous class names can be added back in with the following filter: https://www.advancedcustomfields.com/resources/acfcompatibility/
= 3.0.0 =
* Editor is broken in WordPress 3.3
= 2.1.4 =
* Adds post_id column back into acf_values