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 <?php
/* /*
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.8.0 Version: 5.8.1
Author: Elliot Condon Author: Elliot Condon
Author URI: http://www.elliotcondon.com/ Author URI: https://www.advancedcustomfields.com
Copyright: Elliot Condon
Text Domain: acf Text Domain: acf
Domain Path: /lang Domain Path: /lang
*/ */
@ -18,7 +17,7 @@ if( ! class_exists('ACF') ) :
class ACF { class ACF {
/** @var string The plugin version number */ /** @var string The plugin version number */
var $version = '5.8.0'; var $version = '5.8.1';
/** @var array The plugin settings array */ /** @var array The plugin settings array */
var $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-check-screen.php');
acf_include('includes/ajax/class-acf-ajax-user-setting.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-upgrade.php');
acf_include('includes/ajax/class-acf-ajax-query.php');
acf_include('includes/ajax/class-acf-ajax-query-terms.php');
// forms // forms
acf_include('includes/forms/form-attachment.php'); 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 ){ acf.strEscape = function( string ){
return $('<div>').text(string).html();
var entityMap = {
'&': '&amp;',
'<': '&lt;',
'>': '&gt;',
'"': '&quot;',
"'": '&#39;',
'/': '&#x2F;',
'`': '&#x60;',
'=': '&#x3D;'
};
return String(string).replace(/[&<>"'`=\/]/g, function (s) {
return entityMap[s];
});
}; };
/** /**
@ -1991,7 +1977,7 @@
// option // option
} else { } 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){ (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 * acf.getPostbox
* *
@ -3852,10 +3857,12 @@
// This class is added by WP to postboxes that are hidden via the "Screen Options" tab. // This class is added by WP to postboxes that are hidden via the "Screen Options" tab.
this.$el.removeClass('hide-if-js'); this.$el.removeClass('hide-if-js');
// Add field group style class. // Add field group style class (ignore in block editor).
var style = this.get('style'); if( acf.get('editor') !== 'block' ) {
if( style !== 'default' ) { var style = this.get('style');
this.$el.addClass( style ); if( style !== 'default' ) {
this.$el.addClass( style );
}
} }
// Add .inside class. // Add .inside class.
@ -10100,16 +10107,13 @@
}, frame); }, frame);
// update toolbar button // 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,
toolbar.view = new wp.media.view.Toolbar.Select({ // controller: this
text: frame.options._button, // });
controller: this //}, frame );
});
}, frame );
*/
// on select // on select
frame.on('select', function() { frame.on('select', function() {
@ -10379,12 +10383,35 @@
} }
// customize // customize
this.customizeAttachmentsButton();
this.customizeAttachmentsRouter(); this.customizeAttachmentsRouter();
this.customizeAttachmentFilters(); this.customizeAttachmentFilters();
this.customizeAttachmentCompat(); this.customizeAttachmentCompat();
this.customizeAttachmentLibrary(); 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(){ customizeAttachmentsRouter: function(){
// validate // validate
@ -12170,7 +12197,10 @@
init.wp_autoresize_on = false; init.wp_autoresize_on = false;
// Enable wpautop allowing value to save without <p> tags. // 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 // hook for 3rd party customization
init = acf.applyFilters('wysiwyg_tinymce_settings', init, id, field); 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. // Only add menu order if doesn't already exist.
// Allows Flexible Content field to set custom order. // 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); $field['menu_order'] = ($count[ $field['parent'] ] - 1);
} }

View File

@ -33,6 +33,61 @@ function acf_get_users( $args = array() ) {
return $users; 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 * 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 { 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 $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; var $public = false;
/** /**
* get_response * get_response
* *
* The actual logic for this AJAX request. * Returns the response data to sent back.
* *
* @date 31/7/18 * @date 31/7/18
* @since 5.7.2 * @since 5.7.2
* *
* @param void * @param array $request The request args.
* @return mixed The response data to send back or WP_Error. * @return mixed The response data or WP_Error.
*/ */
function get_response( $request ) {
function response() {
// vars // vars
$args = acf_parse_args($this->request, array( $args = wp_parse_args($this->request, array(
'screen' => '', 'screen' => '',
'post_id' => 0, 'post_id' => 0,
'ajax' => 1, 'ajax' => true,
'exists' => array() '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'; var $action = 'acf/ajax/upgrade';
/** /**
* get_response * get_response
* *
* The actual logic for this AJAX request. * Returns the response data to sent back.
* *
* @date 31/7/18 * @date 31/7/18
* @since 5.7.2 * @since 5.7.2
* *
* @param void * @param array $request The request args.
* @return mixed The response data to send back or WP_Error. * @return mixed The response data or WP_Error.
*/ */
function get_response( $request ) {
function response() {
// switch blog // Switch blog.
if( $this->has('blog_id') ) { if( isset($request['blog_id']) ) {
switch_to_blog( $this->get('blog_id') ); switch_to_blog( $request['blog_id'] );
} }
// bail early if no upgrade avaiable // Bail early if no upgrade avaiable.
if( !acf_has_upgrade() ) { if( !acf_has_upgrade() ) {
return new WP_Error( 'upgrade_error', __('No updates available.', 'acf') ); return new WP_Error( 'upgrade_error', __('No updates available.', 'acf') );
} }
// listen for output // Listen for output.
ob_start(); ob_start();
// run upgrades // Run upgrades.
acf_upgrade_all(); acf_upgrade_all();
// store output // Store output.
$error = ob_get_clean(); $error = ob_get_clean();
// return error if output // Return error or success.
if( $error ) { if( $error ) {
return new WP_Error( 'upgrade_error', $error ); return new WP_Error( 'upgrade_error', $error );
} }
// return
return true; return true;
} }
} }
@ -55,5 +52,3 @@ class ACF_Ajax_Upgrade extends ACF_Ajax {
acf_new_instance('ACF_Ajax_Upgrade'); acf_new_instance('ACF_Ajax_Upgrade');
endif; // class_exists check 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 { 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 $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; var $public = true;
/** /**
* get_response * get_response
* *
* The actual logic for this AJAX request. * Returns the response data to sent back.
* *
* @date 31/7/18 * @date 31/7/18
* @since 5.7.2 * @since 5.7.2
* *
* @param void * @param array $request The request args.
* @return mixed The response data to send back or WP_Error. * @return mixed The response data or WP_Error.
*/ */
function get_response( $request ) {
function response() {
// update // update
if( $this->has('value') ) { if( $this->has('value') ) {
@ -40,5 +39,3 @@ class ACF_Ajax_User_Setting extends ACF_Ajax {
acf_new_instance('ACF_Ajax_User_Setting'); acf_new_instance('ACF_Ajax_User_Setting');
endif; // class_exists check endif; // class_exists check
?>

View File

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

View File

@ -4210,48 +4210,41 @@ function acf_get_post_thumbnail( $post = null, $size = 'thumbnail' ) {
} }
/**
/* * acf_get_browser
* acf_get_browser *
* * Returns the name of the current browser.
* This functino will return the browser string for major browsers *
* * @date 17/01/2014
* @type function * @since 5.0.0
* @date 17/01/2014 *
* @since 5.0.0 * @param void
* * @return string
* @param n/a */
* @return (string)
*/
function acf_get_browser() { function acf_get_browser() {
// vars // Check server var.
$agent = $_SERVER['HTTP_USER_AGENT']; if( isset($_SERVER['HTTP_USER_AGENT']) ) {
$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;
// 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 default.
// return
return ''; return '';
} }
@ -4918,31 +4911,13 @@ function acf_parse_markdown( $text = '' ) {
* @return array * @return array
*/ */
function acf_get_sites() { function acf_get_sites() {
// vars
$results = array(); $results = array();
$sites = get_sites( array( 'number' => 0 ) );
// function get_sites() was added in WP 4.6 if( $sites ) {
if( function_exists('get_sites') ) { foreach( $sites as $site ) {
$results[] = get_site( $site )->to_array();
$_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
));
} }
// return
return $results; return $results;
} }
@ -5063,17 +5038,24 @@ function acf_array_camel_case( $array = array() ) {
} }
/** /**
* acf_is_block_editor * acf_is_block_editor
* *
* Returns true if the current screen uses the block editor. * Returns true if the current screen uses the block editor.
* *
* @date 13/12/18 * @date 13/12/18
* @since 5.8.0 * @since 5.8.0
* *
* @return bool * @param void
*/ * @return bool
*/
function acf_is_block_editor() { 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'), 'acf_version' => acf_get_setting('version'),
'browser' => acf_get_browser(), 'browser' => acf_get_browser(),
'locale' => acf_get_locale(), 'locale' => acf_get_locale(),
'rtl' => is_rtl() 'rtl' => is_rtl(),
'editor' => acf_is_block_editor() ? 'block' : 'classic'
)); ));
// get l10n (old) // get l10n (old)

View File

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

View File

@ -77,6 +77,9 @@ class ACF_Form_Post {
*/ */
function add_meta_boxes( $post_type, $post ) { function add_meta_boxes( $post_type, $post ) {
// Storage for localized postboxes.
$postboxes = array();
// Get field groups for this screen. // Get field groups for this screen.
$field_groups = acf_get_field_groups(array( $field_groups = acf_get_field_groups(array(
'post_id' => $post->ID, 'post_id' => $post->ID,
@ -99,22 +102,37 @@ class ACF_Form_Post {
} }
/** /**
* Filters the metabox priority. * Filters the metabox priority.
* *
* @date 23/06/12 * @date 23/06/12
* @since 3.1.8 * @since 3.1.8
* *
* @param string $priority The metabox priority (high, core, default, low). * @param string $priority The metabox priority (high, core, default, low).
* @param array $field_group The field group array. * @param array $field_group The field group array.
*/ */
$priority = apply_filters('acf/input/meta_box_priority', $priority, $field_group); $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 the meta box.
add_meta_box( $id, $title, array($this, 'render_meta_box'), $post_type, $context, $priority, array('field_group' => $field_group) ); 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] ); $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) // remove postcustom metabox (removes expensive SQL query)
@ -188,23 +206,6 @@ class ACF_Form_Post {
// Render fields. // Render fields.
$fields = acf_get_fields( $field_group ); $fields = acf_get_fields( $field_group );
acf_render_fields( $fields, $post->ID, 'div', $field_group['instruction_placement'] ); 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 "" msgstr ""
"Project-Id-Version: Advanced Custom Fields Pro v5.8\n" "Project-Id-Version: Advanced Custom Fields Pro v5.8\n"
"Report-Msgid-Bugs-To: http://support.advancedcustomfields.com\n" "Report-Msgid-Bugs-To: http://support.advancedcustomfields.com\n"
"POT-Creation-Date: 2019-05-02 00:07+0200\n" "POT-Creation-Date: 2019-05-09 15:51+0200\n"
"PO-Revision-Date: 2019-05-02 00:32+0200\n" "PO-Revision-Date: 2019-05-09 17:23+0200\n"
"Last-Translator: Ralf Koller <r.koller@gmail.com>\n" "Last-Translator: Ralf Koller <r.koller@gmail.com>\n"
"Language-Team: Ralf Koller <r.koller@gmail.com>\n" "Language-Team: Ralf Koller <r.koller@gmail.com>\n"
"Language: de_DE\n" "Language: de_DE\n"
@ -1011,7 +1011,8 @@ msgid ""
"Are you sure you wish to run the updater now?" "Are you sure you wish to run the updater now?"
msgstr "" msgstr ""
"Es wird dringend empfohlen, dass du deine Datenbank sicherst, bevor Du " "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 # @ acf
#: includes/admin/views/html-admin-page-upgrade-network.php:144 #: includes/admin/views/html-admin-page-upgrade-network.php:144
@ -1239,7 +1240,7 @@ msgid ""
msgstr "" msgstr ""
"ACF PRO enthält leistungsstarke Funktionen wie wiederholbare Daten, Flexible " "ACF PRO enthält leistungsstarke Funktionen wie wiederholbare Daten, Flexible "
"Inhalte-Layouts, ein wunderschönes Galerie-Feld sowie die Möglichkeit " "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 # @ acf
#: includes/admin/views/settings-info.php:49 #: includes/admin/views/settings-info.php:49
@ -1297,8 +1298,8 @@ msgstr "Gruppen-Feld"
#: includes/admin/views/settings-info.php:75 #: includes/admin/views/settings-info.php:75
msgid "The Group field provides a simple way to create a group of fields." msgid "The Group field provides a simple way to create a group of fields."
msgstr "" msgstr ""
"Das Gruppen-Feld erlaubt auf eine einfache Weise Felder in Gruppen " "Das Gruppen-Feld bietet einen einfachen Weg eine Gruppe von Feldern zu "
"zusammenzufassen." "erstellen."
# @ acf # @ acf
#: includes/admin/views/settings-info.php:79 #: includes/admin/views/settings-info.php:79
@ -1461,7 +1462,7 @@ msgstr "Wir glauben Du wirst die Änderungen in %s lieben."
# @ acf # @ acf
#: includes/api/api-helpers.php:1003 #: includes/api/api-helpers.php:1003
msgid "Thumbnail" msgid "Thumbnail"
msgstr "Miniaturbild" msgstr "Vorschaubild"
# @ acf # @ acf
#: includes/api/api-helpers.php:1004 #: includes/api/api-helpers.php:1004
@ -3236,7 +3237,7 @@ msgstr "Aktuelle Benutzerrolle"
# @ acf # @ acf
#: includes/locations/class-acf-location-current-user-role.php:110 #: includes/locations/class-acf-location-current-user-role.php:110
msgid "Super Admin" msgid "Super Admin"
msgstr "Super-Admin" msgstr "Super-Administrator"
# @ acf # @ acf
#: includes/locations/class-acf-location-current-user.php:27 #: includes/locations/class-acf-location-current-user.php:27
@ -3324,17 +3325,17 @@ msgstr "Unterseite (mit übergeordneter Seite)"
# @ acf # @ acf
#: includes/locations/class-acf-location-post-category.php:27 #: includes/locations/class-acf-location-post-category.php:27
msgid "Post Category" msgid "Post Category"
msgstr "Beitrags-Kategorie" msgstr "Beitragskategorie"
# @ acf # @ acf
#: includes/locations/class-acf-location-post-format.php:27 #: includes/locations/class-acf-location-post-format.php:27
msgid "Post Format" msgid "Post Format"
msgstr "Beitrags-Format" msgstr "Beitragsformat"
# @ acf # @ acf
#: includes/locations/class-acf-location-post-status.php:27 #: includes/locations/class-acf-location-post-status.php:27
msgid "Post Status" msgid "Post Status"
msgstr "Beitrags-Status" msgstr "Beitragsstatus"
# @ acf # @ acf
#: includes/locations/class-acf-location-post-taxonomy.php:27 #: includes/locations/class-acf-location-post-taxonomy.php:27
@ -3349,7 +3350,7 @@ msgstr "Beitrags-Template"
# @ acf # @ acf
#: includes/locations/class-acf-location-user-form.php:27 #: includes/locations/class-acf-location-user-form.php:27
msgid "User Form" msgid "User Form"
msgstr "Benutzer-Formular" msgstr "Benutzerformular"
# @ acf # @ acf
#: includes/locations/class-acf-location-user-form.php:88 #: includes/locations/class-acf-location-user-form.php:88
@ -3375,7 +3376,7 @@ msgstr "Widget"
#: includes/validation.php:364 #: includes/validation.php:364
#, php-format #, php-format
msgid "%s value is required" msgid "%s value is required"
msgstr "%s Wert ist notwendig" msgstr "%s Wert ist erforderlich"
# @ acf # @ acf
#. Plugin Name of the plugin/theme #. Plugin Name of the plugin/theme
@ -3402,8 +3403,8 @@ msgstr ""
#: pro/admin/admin-updates.php:49 #: pro/admin/admin-updates.php:49
msgid "<b>Error</b>. Could not connect to update server" msgid "<b>Error</b>. Could not connect to update server"
msgstr "" msgstr ""
"<b>Fehler</b>. Es konnte keine Verbindung zum Update-Server hergestellt " "<b>Fehler</b>. Es konnte keine Verbindung zum Aktualisierungsserver "
"werden" "hergestellt werden"
# @ acf # @ acf
#: pro/admin/admin-updates.php:118 pro/admin/views/html-settings-updates.php:13 #: 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 " "<b>Error</b>. Could not authenticate update package. Please check again or "
"deactivate and reactivate your ACF PRO license." "deactivate and reactivate your ACF PRO license."
msgstr "" msgstr ""
"<b>Fehler</b>. Das Update-Packet konnte nicht authentifiziert werden. Bitte " "<b>Fehler</b>. Das Aktualisierungspaket konnte nicht authentifiziert werden. "
"probiere es nochmal oder deaktiviere und reaktiviere deine ACF PRO-Lizenz." "Bitte probiere es nochmal oder deaktiviere und reaktiviere deine ACF PRO-"
"Lizenz."
# @ acf # @ acf
#: pro/admin/views/html-settings-updates.php:7 #: pro/admin/views/html-settings-updates.php:7
@ -3439,10 +3441,10 @@ msgid ""
"licence key, please see <a href=\"%s\" target=\"_blank\">details & pricing</" "licence key, please see <a href=\"%s\" target=\"_blank\">details & pricing</"
"a>." "a>."
msgstr "" msgstr ""
"Um die Updatefähigkeit freizuschalten gib bitte unten Deinen Lizenzschlüssel " "Um die Aktualisierungsfähigkeit freizuschalten gib bitte unten Deinen "
"ein. Falls Du keinen besitzen solltest informiere Dich bitte hier " "Lizenzschlüssel ein. Falls Du keinen besitzen solltest informiere Dich bitte "
"hinsichtlich <a href=\"%s\" target=\"_blank\">Preisen und aller weiteren " "hier hinsichtlich <a href=\"%s\" target=\"_blank\">Preisen und aller "
"Details</a>." "weiteren Details</a>."
# @ acf # @ acf
#: pro/admin/views/html-settings-updates.php:29 #: pro/admin/views/html-settings-updates.php:29
@ -3478,7 +3480,7 @@ msgstr "Plugin aktualisieren"
#: pro/admin/views/html-settings-updates.php:94 #: pro/admin/views/html-settings-updates.php:94
msgid "Please enter your license key above to unlock updates" msgid "Please enter your license key above to unlock updates"
msgstr "" 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" "freizuschalten"
# @ acf # @ acf
@ -3489,7 +3491,7 @@ msgstr "Erneut suchen"
# @ acf # @ acf
#: pro/admin/views/html-settings-updates.php:117 #: pro/admin/views/html-settings-updates.php:117
msgid "Upgrade Notice" msgid "Upgrade Notice"
msgstr "Aktualisierungs-Hinweis" msgstr "Hinweis zum Upgrade"
#: pro/blocks.php:371 #: pro/blocks.php:371
msgid "Switch to Edit" 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" "\">Updates</a> page. If you don't have a licence key, please see <a href=\"%s"
"\">details & pricing</a>." "\">details & pricing</a>."
msgstr "" msgstr ""
"Um die Update-Fähigkeit freizuschalten gib bitte Deinen Lizenzschlüssel auf " "Um die Aktualisierungsfähigkeit freizuschalten gib bitte Deinen "
"der <a href=\"%s\">Aktualisierungen</a> Seite ein. Falls Du keinen besitzt " "Lizenzschlüssel auf der <a href=\"%s\">Aktualisierungen</a> Seite ein. Falls "
"informiere Dich bitte hier hinsichtlich der <a href=\"%s\" target=\"_blank" "Du keinen besitzt informiere Dich bitte hier hinsichtlich der <a href=\"%s\" "
"\">Preise und Einzelheiten</a>." "target=\"_blank\">Preise und Einzelheiten</a>."
#: tests/basic/test-blocks.php:13 #: tests/basic/test-blocks.php:13
msgid "Testimonial" msgid "Testimonial"
@ -3837,6 +3839,15 @@ msgstr "Testimonial"
msgid "A custom testimonial block." msgid "A custom testimonial block."
msgstr "Ein individueller 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 #. Plugin URI of the plugin/theme
msgid "https://www.advancedcustomfields.com/" msgid "https://www.advancedcustomfields.com/"
msgstr "https://www.advancedcustomfields.com/" msgstr "https://www.advancedcustomfields.com/"

Binary file not shown.

View File

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

Binary file not shown.

View File

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

View File

@ -1389,7 +1389,7 @@
attachment = attachment.attributes; attachment = attachment.attributes;
// preview size // preview size
var url = acf.isget(attachment, 'sizes', 'medium', 'url'); var url = acf.isget(attachment, 'sizes', this.get('preview_size'), 'url');
if( url !== null ) { if( url !== null ) {
attachment.url = url; 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. // Prevent wp_targeted_link_rel from corrupting JSON.
remove_filter( 'content_save_pre', 'wp_filter_post_kses' ); remove_filter( 'content_save_pre', 'wp_filter_post_kses' );
remove_filter( 'content_save_pre', 'wp_targeted_link_rel' ); remove_filter( 'content_save_pre', 'wp_targeted_link_rel' );
remove_filter( 'content_save_pre', 'balanceTags', 50 );
/** /**
* Filteres the block attributes before saving. * Filteres the block attributes before saving.

View File

@ -25,6 +25,9 @@ class acf_field_gallery extends acf_field {
$this->label = __("Gallery",'acf'); $this->label = __("Gallery",'acf');
$this->category = 'content'; $this->category = 'content';
$this->defaults = array( $this->defaults = array(
'return_format' => 'array',
'preview_size' => 'medium',
'insert' => 'append',
'library' => 'all', 'library' => 'all',
'min' => 0, 'min' => 0,
'max' => 0, 'max' => 0,
@ -35,7 +38,6 @@ class acf_field_gallery extends acf_field {
'max_height' => 0, 'max_height' => 0,
'max_size' => 0, 'max_size' => 0,
'mime_types' => '', '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() * render_field()
* *
@ -461,15 +425,15 @@ class acf_field_gallery extends acf_field {
function render_field( $field ) { function render_field( $field ) {
// enqueue // Enqueue uploader assets.
acf_enqueue_uploader(); acf_enqueue_uploader();
// Control attributes.
// vars $attrs = array(
$atts = array(
'id' => $field['id'], 'id' => $field['id'],
'class' => "acf-gallery {$field['class']}", 'class' => "acf-gallery {$field['class']}",
'data-library' => $field['library'], 'data-library' => $field['library'],
'data-preview_size' => $field['preview_size'],
'data-min' => $field['min'], 'data-min' => $field['min'],
'data-max' => $field['max'], 'data-max' => $field['max'],
'data-mime_types' => $field['mime_types'], 'data-mime_types' => $field['mime_types'],
@ -477,86 +441,68 @@ class acf_field_gallery extends acf_field {
'data-columns' => 4 'data-columns' => 4
); );
// Set gallery height with deafult of 400px and minimum of 200px.
// set gallery height
$height = acf_get_user_setting('gallery_height', 400); $height = acf_get_user_setting('gallery_height', 400);
$height = max( $height, 200 ); // minimum height is 200 $height = max( $height, 200 );
$atts['style'] = "height:{$height}px"; $attrs['style'] = "height:{$height}px";
// Load attachments.
// get posts $attachments = array();
$value = $this->get_attachments( $field['value'] ); if( $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 <?php acf_esc_attr_e($attrs); ?>>
<input type="hidden" name="<?php echo esc_attr($field['name']); ?>" value="" />
<div class="acf-hidden">
<?php acf_hidden_input(array( 'name' => $field['name'], 'value' => '' )); ?>
</div>
<div class="acf-gallery-main"> <div class="acf-gallery-main">
<div class="acf-gallery-attachments"> <div class="acf-gallery-attachments">
<?php if( $attachments ): ?>
<?php if( $value ): ?> <?php foreach( $attachments as $i => $attachment ):
<?php foreach( $value as $i => $v ):
// bail early if no value // Vars
if( !$v ) continue; $a_id = $attachment['ID'];
$a_title = $attachment['title'];
$a_type = $attachment['type'];
// vars $a_filename = $attachment['filename'];
$a = array( $a_class = "acf-gallery-attachment -{$a_type}";
'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';
}
// 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']; ?>"> <div class="<?php echo esc_attr($a_class); ?>" data-id="<?php echo esc_attr($a_id); ?>">
<?php acf_hidden_input(array( 'name' => $field['name'].'[]', 'value' => $a['ID'] )); ?> <input type="hidden" name="<?php echo esc_attr($field['name']); ?>[]" value="<?php echo esc_attr($a_id); ?>" />
<div class="margin"> <div class="margin">
<div class="thumbnail"> <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> </div>
<?php if( $a['filename'] ): ?> <?php if( $a_type !== 'image' ): ?>
<div class="filename"><?php echo acf_get_truncated($a['filename'], 30); ?></div> <div class="filename"><?php echo acf_get_truncated( $a_filename, 30 ); ?></div>
<?php endif; ?> <?php endif; ?>
</div> </div>
<div class="actions"> <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>
</div> </div>
<?php endforeach; ?> <?php endforeach; ?>
<?php endif; ?> <?php endif; ?>
</div> </div>
<div class="acf-gallery-toolbar"> <div class="acf-gallery-toolbar">
<ul class="acf-hl"> <ul class="acf-hl">
<li> <li>
<a href="#" class="acf-button button button-primary acf-gallery-add"><?php _e('Add to gallery', 'acf'); ?></a> <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> </select>
</li> </li>
</ul> </ul>
</div> </div>
</div> </div>
<div class="acf-gallery-side"> <div class="acf-gallery-side">
<div class="acf-gallery-side-inner"> <div class="acf-gallery-side-inner">
<div class="acf-gallery-side-data"></div>
<div class="acf-gallery-side-data"></div> <div class="acf-gallery-toolbar">
<ul class="acf-hl">
<div class="acf-gallery-toolbar"> <li>
<a href="#" class="acf-button button acf-gallery-close"><?php _e('Close', 'acf'); ?></a>
<ul class="acf-hl"> </li>
<li> <li class="acf-fr">
<a href="#" class="acf-button button acf-gallery-close"><?php _e('Close', 'acf'); ?></a> <a class="acf-button button button-primary acf-gallery-update" href="#"><?php _e('Update', 'acf'); ?></a>
</li> </li>
<li class="acf-fr"> </ul>
<a class="acf-button button button-primary acf-gallery-update" href="#"><?php _e('Update', 'acf'); ?></a> </div>
</li> </div>
</ul>
</div>
</div>
</div> </div>
</div> </div>
<?php <?php
@ -636,25 +573,29 @@ class acf_field_gallery extends acf_field {
} }
// return_format
// min
acf_render_field_setting( $field, array( acf_render_field_setting( $field, array(
'label' => __('Minimum Selection','acf'), 'label' => __('Return Format','acf'),
'instructions' => '', 'instructions' => '',
'type' => 'number', 'type' => 'radio',
'name' => 'min' 'name' => 'return_format',
'layout' => 'horizontal',
'choices' => array(
'array' => __("Image Array",'acf'),
'url' => __("Image URL",'acf'),
'id' => __("Image ID",'acf')
)
)); ));
// preview_size
// max
acf_render_field_setting( $field, array( acf_render_field_setting( $field, array(
'label' => __('Maximum Selection','acf'), 'label' => __('Preview Size','acf'),
'instructions' => '', 'instructions' => '',
'type' => 'number', 'type' => 'select',
'name' => 'max' 'name' => 'preview_size',
'choices' => acf_get_image_sizes()
)); ));
// insert // insert
acf_render_field_setting( $field, array( acf_render_field_setting( $field, array(
'label' => __('Insert','acf'), 'label' => __('Insert','acf'),
@ -667,7 +608,6 @@ class acf_field_gallery extends acf_field {
) )
)); ));
// library // library
acf_render_field_setting( $field, array( acf_render_field_setting( $field, array(
'label' => __('Library','acf'), '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 // min
acf_render_field_setting( $field, array( acf_render_field_setting( $field, array(
@ -739,7 +694,6 @@ class acf_field_gallery extends acf_field {
'_append' => 'max_width' '_append' => 'max_width'
)); ));
// allowed type // allowed type
acf_render_field_setting( $field, array( acf_render_field_setting( $field, array(
'label' => __('Allowed file types','acf'), 'label' => __('Allowed file types','acf'),
@ -747,7 +701,6 @@ class acf_field_gallery extends acf_field {
'type' => 'text', 'type' => 'text',
'name' => 'mime_types', 'name' => 'mime_types',
)); ));
} }
@ -769,25 +722,54 @@ class acf_field_gallery extends acf_field {
function format_value( $value, $post_id, $field ) { function format_value( $value, $post_id, $field ) {
// bail early if no value // Bail early if no value.
if( empty($value) ) return false; if( !$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 ] );
} }
// Clean value into an array of IDs.
$attachment_ids = array_map('intval', acf_array($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
));
// 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.
return $posts; return $value;
} }

View File

@ -67,6 +67,19 @@ From your WordPress dashboard
== Changelog == == 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 = = 5.8.0 =
*Release Date - 8 May 2019* *Release Date - 8 May 2019*
@ -183,369 +196,6 @@ From your WordPress dashboard
* Dev - Reordered various actions and filters for more usefulness. * Dev - Reordered various actions and filters for more usefulness.
* i18n - Updated Polish language thanks to Dariusz Zielonka * i18n - Updated Polish language thanks to Dariusz Zielonka
= 5.7.5 = [View the full changelog](https://www.advancedcustomfields.com/changelog/)
*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/
== Upgrade Notice == == 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