Merge branch 'release/5.6.5' into develop

This commit is contained in:
Remco Tolsma 2017-11-17 15:47:42 +01:00
commit 2459dd09eb
45 changed files with 8656 additions and 5755 deletions

View File

@ -3,7 +3,7 @@
Plugin Name: Advanced Custom Fields PRO
Plugin URI: https://www.advancedcustomfields.com/
Description: Customise WordPress with powerful, professional and intuitive fields.
Version: 5.6.3
Version: 5.6.5
Author: Elliot Condon
Author URI: http://www.elliotcondon.com/
Copyright: Elliot Condon
@ -18,7 +18,7 @@ if( ! class_exists('acf') ) :
class acf {
/** @var string The plugin version number */
var $version = '5.6.3';
var $version = '5.6.5';
/** @var array The plugin settings array */
@ -160,7 +160,7 @@ class acf {
acf_include('includes/admin/admin-field-group.php');
acf_include('includes/admin/admin-field-groups.php');
acf_include('includes/admin/install.php');
acf_include('includes/admin/settings-tools.php');
acf_include('includes/admin/admin-tools.php');
acf_include('includes/admin/settings-info.php');

View File

@ -375,6 +375,20 @@ table.conditional-logic-rules tbody td {
}
/*--------------------------------------------------------------------------------------------
*
* Slug
*
*--------------------------------------------------------------------------------------------*/
#slugdiv .inside {
padding: 12px;
margin: 0;
}
#slugdiv input[type="text"] {
width: 100%;
height: 28px;
font-size: 14px;
}
/*--------------------------------------------------------------------------------------------
*
* RTL
*
*--------------------------------------------------------------------------------------------*/

View File

@ -732,6 +732,15 @@ a.acf-icon.-cancel.grey:hover {
transform: translate(50px, 0);
opacity: 0;
}
/* fade-up */
.acf-fade-up {
-webkit-transition: all 0.25s ease-out;
-moz-transition: all 0.25s ease-out;
-o-transition: all 0.25s ease-out;
transition: all 0.25s ease-out;
transform: translate(0, -10px);
opacity: 0;
}
/*---------------------------------------------------------------------------------------------
*
* wp-admin
@ -795,6 +804,11 @@ a.acf-icon.-cancel.grey:hover {
clear: both;
/* rtl */
}
.acf-columns-2:after {
clear: both;
content: "";
display: table;
}
html[dir="rtl"] .acf-columns-2 {
margin-right: 0;
margin-left: 300px;
@ -1235,6 +1249,204 @@ html[dir="rtl"] .acf-table > tbody > tr > td.order + td {
}
/*---------------------------------------------------------------------------------------------
*
* acf-postbox-columns
*
*---------------------------------------------------------------------------------------------*/
.acf-postbox-columns {
position: relative;
margin-top: -11px;
margin-bottom: -11px;
margin-left: -12px;
margin-right: 268px;
}
.acf-postbox-columns:after {
clear: both;
content: "";
display: table;
}
.acf-postbox-columns .acf-postbox-main,
.acf-postbox-columns .acf-postbox-side {
-webkit-box-sizing: border-box;
-moz-box-sizing: border-box;
box-sizing: border-box;
padding: 0 12px 12px;
}
.acf-postbox-columns .acf-postbox-main {
float: left;
width: 100%;
}
.acf-postbox-columns .acf-postbox-side {
float: right;
width: 280px;
margin-right: -280px;
}
.acf-postbox-columns .acf-postbox-side:before {
content: "";
display: block;
position: absolute;
width: 1px;
height: 100%;
top: 0;
right: 0;
background: #ebebeb;
}
/* mobile */
@media only screen and (max-width: 850px) {
.acf-postbox-columns {
margin: 0;
}
.acf-postbox-columns .acf-postbox-main,
.acf-postbox-columns .acf-postbox-side {
float: none;
width: auto;
margin: 0;
padding: 0;
}
.acf-postbox-columns .acf-postbox-side {
margin-top: 1em;
}
.acf-postbox-columns .acf-postbox-side:before {
display: none;
}
}
/*---------------------------------------------------------------------------------------------
*
* acf-panel
*
*---------------------------------------------------------------------------------------------*/
.acf-panel {
margin-top: -1px;
border-top: 1px solid #e2e4e7;
border-bottom: 1px solid #e2e4e7;
/* open */
/* inside postbox */
/* fields */
}
.acf-panel .acf-panel-title {
margin: 0;
padding: 12px;
font-weight: bold;
cursor: pointer;
font-size: inherit;
}
.acf-panel .acf-panel-title i {
float: right;
}
.acf-panel .acf-panel-inside {
margin: 0;
padding: 0 12px 12px;
display: none;
}
.acf-panel.-open .acf-panel-inside {
display: block;
}
.postbox .acf-panel {
margin-left: -12px;
margin-right: -12px;
}
.acf-panel .acf-field {
margin: 20px 0 0;
}
.acf-panel .acf-field .acf-label label {
color: #555d66;
font-weight: normal;
}
.acf-panel .acf-field:first-child {
margin-top: 0;
}
/*---------------------------------------------------------------------------------------------
*
* Admin Tools
*
*---------------------------------------------------------------------------------------------*/
#acf-admin-tools .notice {
margin-top: 10px;
}
.acf-meta-box-wrap {
margin-top: 10px;
/* acf-fields */
}
.acf-meta-box-wrap .postbox {
-webkit-box-sizing: border-box;
-moz-box-sizing: border-box;
box-sizing: border-box;
}
.acf-meta-box-wrap .postbox .inside {
margin-bottom: 0;
}
.acf-meta-box-wrap .postbox .hndle {
font-size: 14px;
padding: 8px 12px;
margin: 0;
line-height: 1.4;
}
.acf-meta-box-wrap .postbox .handlediv {
display: none;
}
.acf-meta-box-wrap .acf-fields {
border: #ebebeb solid 1px;
background: #fafafa;
border-radius: 3px;
}
/* grid */
.acf-meta-box-wrap.-grid {
margin-left: 8px;
margin-right: 8px;
}
.acf-meta-box-wrap.-grid .postbox {
float: left;
clear: left;
width: 50%;
margin: 0 0 16px;
}
.acf-meta-box-wrap.-grid .postbox:nth-child(odd) {
margin-left: -8px;
}
.acf-meta-box-wrap.-grid .postbox:nth-child(even) {
float: right;
clear: right;
margin-right: -8px;
}
/* mobile */
@media only screen and (max-width: 850px) {
.acf-meta-box-wrap.-grid {
margin-left: 0;
margin-right: 0;
}
.acf-meta-box-wrap.-grid .postbox {
margin-left: 0 !important;
margin-right: 0 !important;
width: 100%;
}
}
/* export tool */
#acf-admin-tool-export {
/* panel: selection */
}
#acf-admin-tool-export p {
max-width: 800px;
}
#acf-admin-tool-export ul {
column-width: 200px;
}
#acf-admin-tool-export .acf-postbox-side .button {
margin: 0;
width: 100%;
}
#acf-admin-tool-export textarea {
display: block;
width: 100%;
min-height: 500px;
background: #fafafa;
box-shadow: none;
padding: 7px;
border-radius: 3px;
}
#acf-admin-tool-export .acf-panel-selection .acf-label {
display: none;
}
/*---------------------------------------------------------------------------------------------
*
* Retina
*
*---------------------------------------------------------------------------------------------*/

View File

@ -45,6 +45,9 @@
margin: 0 0 3px;
padding: 0;
}
.acf-field .acf-label:empty {
margin-bottom: 0;
}
.acf-field .acf-input {
vertical-align: top;
}
@ -219,7 +222,7 @@ html[dir="rtl"] .acf-fields.-left > .acf-field > .acf-input {
}
/* left */
.acf-fields.-clear.-left > .acf-field > .acf-label {
padding-right: 24px;
padding-right: 12px * 2;
}
/*--------------------------------------------------------------------------------------------
*
@ -280,8 +283,7 @@ html[dir="rtl"] .acf-fields.-left > .acf-field > .acf-input {
.acf-postbox.seamless > .inside {
display: block !important;
/* stop metabox from hiding when closed */
margin-left: -12px !important;
margin-right: -12px !important;
margin: -12px !important;
}
.acf-postbox.seamless > .acf-fields > .acf-field {
border: 0 none !important;
@ -700,7 +702,7 @@ html[dir="rtl"] .select2-container.-acf .select2-choice .select2-arrow {
*---------------------------------------------------------------------------------------------*/
ul.acf-radio-list,
ul.acf-checkbox-list {
background: transparent !important;
background: transparent;
position: relative;
padding: 1px;
margin: 0;
@ -1209,6 +1211,13 @@ html[dir="rtl"] .acf-relationship .selection .values .acf-icon {
.acf-relationship .selection .values .acf-rel-item b {
text-decoration: none;
}
/* menu item fix */
.menu-item .acf-relationship ul {
width: auto;
}
.menu-item .acf-relationship li {
display: block;
}
/*--------------------------------------------------------------------------
*
* WYSIWYG

View File

@ -2028,6 +2028,10 @@
// duplicate
$tr2 = acf.duplicate( $tr );
// action
//acf.do_action('add_location_rule', $tr2);
},
@ -2050,21 +2054,22 @@
var $tr = e.$el.closest('tr');
// save field
$tr.find('select:first').trigger('change');
// action
//acf.do_action('remove_location_rule', $tr);
// remove
if( $tr.siblings('tr').length == 0 ) {
// remove group
$tr.closest('.rule-group').remove();
}
} else {
// remove tr
$tr.remove();
}
},
@ -2100,6 +2105,14 @@
// remove all tr's except the first one
$group2.find('tr:not(:first)').remove();
// vars
//var $tr = $group2.find('tr');
// action
//acf.do_action('add_location_rule', $tr);
},
@ -2151,6 +2164,10 @@
// update
$rule.replaceWith( html );
// action
//acf.do_action('change_location_rule', $rule);
}
});

File diff suppressed because one or more lines are too long

View File

@ -3675,6 +3675,38 @@ var acf;
},
temp: function( text, $el ){
// tooltip
var $el = this.tooltip( text, $el );
var time = 0;
// wait 250
time += 250;
// add class
setTimeout(function(){
$el.addClass('acf-fade-up');
}, time);
// wait 250
time += 250;
// remove
setTimeout(function(){
$el.remove();
}, time);
},
confirm: function( $el, callback, text, button_y, button_n ){
// defaults
@ -3879,6 +3911,118 @@ var acf;
});
/**
* panel
*
* This model handles .acf-panel JS
*
* @date 21/10/17
* @since 5.6.3
*
* @param n/a
* @return n/a
*/
var acf_panel = acf.model.extend({
events: {
'click .acf-panel-title': '_click',
},
_click: function( e ){
// prevent Defailt
e.preventDefault();
// open close
this.toggle( e.$el.parent() );
},
is_open: function( $el ) {
return $el.hasClass('-open');
},
toggle: function( $el ){
// is open
if( this.is_open($el) ) {
this.close( $el );
} else {
this.open( $el );
}
},
open: function( $el ){
$el.addClass('-open');
$el.find('.acf-panel-title i').attr('class', 'dashicons dashicons-arrow-down');
},
close: function( $el ){
$el.removeClass('-open');
$el.find('.acf-panel-title i').attr('class', 'dashicons dashicons-arrow-right');
}
});
/**
* acf_h2_notice
*
* This model will move the .acf-notice element quickly without the WP flicker
*
* @date 21/10/17
* @since 5.6.3
*
* @param n/a
* @return n/a
*/
acf.notice = acf.model.extend({
actions: {
'prepare': 'prepare',
},
prepare: function(){
// vars
var $notice = $('.acf-notice');
// move
if( $notice.length ) {
$('h1:first').after( $notice );
}
},
html: function( text, type ){
},
success: function( text ){
},
error: function( text ){
},
warning: function( text ){
},
information: function( text ){
}
});
/*
* Sortable
*
@ -11498,24 +11642,20 @@ var acf;
active: 1,
actions: {
'add_field_error': 'add_field_error'
'invalid_field': 'invalid_field',
},
add_field_error: function( $field ){
invalid_field: function( $field ){
// bail early if already focused
if( !this.active ) {
return;
}
// bail early if not hidden by tab
if( !$field.hasClass('hidden-by-tab') ) {
return;
}
@ -12426,23 +12566,51 @@ var acf;
ready: function( $el ){
// reference
$el.find('.acf-field input').on('invalid', function( e ){
// vars
var $inputs = $('.acf-field input, .acf-field textarea, .acf-field select');
// prvent defual
// fixes chrome bug where 'hidden-by-tab' field throws focus error
// bail early if no inputs
if( !$inputs.length ) return;
// reference
var self = this;
// event
$inputs.on('invalid', function( e ){
// vars
var $input = $(this);
var $field = acf.get_field_wrap( $input );
// action
acf.do_action('invalid', $input);
acf.do_action('invalid_field', $field);
// save draft (ignore validation)
if( acf.validation.ignore ) return;
// prevent default
// - prevents browser error message
// - also fixes chrome bug where 'hidden-by-tab' field throws focus error
e.preventDefault();
// append to errors
acf.validation.errors.push({
input: $(this).attr('name'),
input: $input.attr('name'),
message: e.target.validationMessage
});
// run validation
acf.validation.fetch( $(this).closest('form') );
// invalid event has prevented the form from submitting
// trigger acf validation fetch (safe to call multiple times)
acf.validation.fetch( $input.closest('form') );
});
@ -12560,8 +12728,64 @@ var acf;
click_ignore: function( e ) {
// reference
var self = this;
// vars
this.ignore = 1;
this.$trigger = e.$el;
this.$form = e.$el.closest('form');
// remove error message
$('.'+this.message_class).each(function(){
acf.remove_el( $(this) );
});
// ignore required inputs
this.ignore_required_inputs();
// maybe show errors
setTimeout(function(){
self.ignore = 0;
}, 100);
},
/**
* ignore_required_inputs
*
* This function will temporarily remove the 'required' attribute from all ACF inputs
*
* @date 23/10/17
* @since 5.6.3
*
* @param n/a
* @return n/a
*/
ignore_required_inputs: function(){
// vars
var $inputs = $('.acf-field input[required], .acf-field textarea[required], .acf-field select[required]');
// bail early if no inputs
if( !$inputs.length ) return;
// remove required
$inputs.prop('required', false);
// timeout
setTimeout(function(){
$inputs.prop('required', true);
}, 100);
},
@ -12837,8 +13061,6 @@ var acf;
if( !this.valid ) return;
// update ignore (allow form submit to not run validation)
this.ignore = 1;
@ -12936,31 +13158,48 @@ var acf;
this.$trigger = null;
// display errors
this.display_errors( json.errors, $form );
},
/**
* display_errors
*
* This function will display errors
*
* @date 23/10/17
* @since 5.6.3
*
* @param array errors
* @return n/a
*/
display_errors: function( errors, $form ){
// bail early if no errors
if( !errors || !errors.length ) return;
// vars
var $scrollTo = null,
count = 0,
message = acf._e('validation_failed');
var $message = $form.children('.acf-error-message');
var message = acf._e('validation_failed');
var count = 0;
var $scrollTo = null;
// show field error messages
if( json.errors && json.errors.length > 0 ) {
// loop
for( i = 0; i < errors.length; i++ ) {
for( var i in json.errors ) {
// get error
var error = json.errors[ i ];
// vars
var error = errors[ i ];
// is error for a specific field?
// general error
if( !error.input ) {
// update message
message += '. ' + error.message;
// ignore following functionality
continue;
}
@ -12970,9 +13209,7 @@ var acf;
// if $_POST value was an array, this $input may not exist
if( !$input.exists() ) {
$input = $form.find('[name^="' + error.input + '"]').first();
}
@ -12994,9 +13231,7 @@ var acf;
// set $scrollTo
if( $scrollTo === null ) {
$scrollTo = $field;
}
}
@ -13004,27 +13239,16 @@ var acf;
// message
if( count == 1 ) {
message += '. ' + acf._e('validation_failed_1');
} else if( count > 1 ) {
message += '. ' + acf._e('validation_failed_2').replace('%d', count);
}
}
// get $message
var $message = $form.children('.acf-error-message');
// maybe create $message
if( !$message.exists() ) {
$message = $('<div class="acf-error-message"><p></p><a href="#" class="acf-icon -cancel small"></a></div>');
$form.prepend( $message );
}
@ -13034,18 +13258,14 @@ var acf;
// if no $scrollTo, set to message
if( $scrollTo === null ) {
$scrollTo = $message;
}
// timeout avoids flicker jump
// timeout
setTimeout(function(){
$("html, body").animate({ scrollTop: $scrollTo.offset().top - ( $(window).height() / 2 ) }, 500);
}, 1);
}, 10);
},
@ -13100,6 +13320,7 @@ var acf;
// hook for 3rd party customization
acf.do_action('add_field_error', $field);
acf.do_action('invalid_field', $field);
},
@ -13137,6 +13358,7 @@ var acf;
// hook for 3rd party customization
acf.do_action('remove_field_error', $field);
acf.do_action('valid_field', $field);
},
@ -13647,10 +13869,10 @@ var acf;
init = acf.apply_filters('wysiwyg_tinymce_settings', init, id, $field);
// z-index fix
if( acf.isset(tinymce,'ui','FloatPanel') ) {
tinymce.ui.FloatPanel.zIndex = 900000;
}
// z-index fix (caused too many conflicts)
//if( acf.isset(tinymce,'ui','FloatPanel') ) {
// tinymce.ui.FloatPanel.zIndex = 900000;
//}
// store settings
@ -13846,6 +14068,10 @@ var acf;
if( typeof switchEditors === 'undefined' ) return false;
// bail ealry if not initialized
if( typeof tinyMCEPreInit.mceInit[ id ] === 'undefined' ) return false;
// toggle
switchEditors.go( id, 'tmce');

File diff suppressed because one or more lines are too long

View File

@ -629,7 +629,6 @@ class acf_admin_field_groups {
</div>
</div>
</div>
<div class="acf-clear"></div>
</script>
<script type="text/javascript">
(function($){

View File

@ -0,0 +1,354 @@
<?php
if( ! defined( 'ABSPATH' ) ) exit; // Exit if accessed directly
if( ! class_exists('acf_admin_tools') ) :
class acf_admin_tools {
/** @var array Contains an array of admin tool instances */
var $tools = array();
/** @var string The active tool */
var $active = '';
/**
* __construct
*
* This function will setup the class functionality
*
* @date 10/10/17
* @since 5.6.3
*
* @param n/a
* @return n/a
*/
function __construct() {
// actions
add_action('admin_menu', array($this, 'admin_menu'));
}
/**
* register_tool
*
* This function will store a tool tool class
*
* @date 10/10/17
* @since 5.6.3
*
* @param string $class
* @return n/a
*/
function register_tool( $class ) {
$instance = new $class();
$this->tools[ $instance->name ] = $instance;
}
/**
* get_tool
*
* This function will return a tool tool class
*
* @date 10/10/17
* @since 5.6.3
*
* @param string $name
* @return n/a
*/
function get_tool( $name ) {
return isset( $this->tools[$name] ) ? $this->tools[$name] : null;
}
/**
* get_tools
*
* This function will return an array of all tools
*
* @date 10/10/17
* @since 5.6.3
*
* @param n/a
* @return array
*/
function get_tools() {
return $this->tools;
}
/*
* admin_menu
*
* This function will add the ACF menu item to the WP admin
*
* @type action (admin_menu)
* @date 28/09/13
* @since 5.0.0
*
* @param n/a
* @return n/a
*/
function admin_menu() {
// bail early if no show_admin
if( !acf_get_setting('show_admin') ) return;
// add page
$page = add_submenu_page('edit.php?post_type=acf-field-group', __('Tools','acf'), __('Tools','acf'), acf_get_setting('capability'), 'acf-tools', array($this, 'html'));
// actions
add_action('load-' . $page, array($this, 'load'));
}
/**
* load
*
* description
*
* @date 10/10/17
* @since 5.6.3
*
* @param n/a
* @return n/a
*/
function load() {
// disable filters (default to raw data)
acf_disable_filters();
// include tools
$this->include_tools();
// check submit
$this->check_submit();
// load acf scripts
acf_enqueue_scripts();
}
/**
* include_tools
*
* description
*
* @date 10/10/17
* @since 5.6.3
*
* @param n/a
* @return n/a
*/
function include_tools() {
// include
acf_include('includes/admin/tools/class-acf-admin-tool.php');
acf_include('includes/admin/tools/class-acf-admin-tool-export.php');
acf_include('includes/admin/tools/class-acf-admin-tool-import.php');
// action
do_action('acf/include_admin_tools');
}
/**
* check_submit
*
* description
*
* @date 10/10/17
* @since 5.6.3
*
* @param n/a
* @return n/a
*/
function check_submit() {
// loop
foreach( $this->get_tools() as $tool ) {
// load
$tool->load();
// submit
if( acf_verify_nonce($tool->name) ) {
$tool->submit();
}
}
}
/**
* html
*
* description
*
* @date 10/10/17
* @since 5.6.3
*
* @param n/a
* @return n/a
*/
function html() {
// vars
$screen = get_current_screen();
$active = acf_maybe_get_GET('tool');
// view
$view = array(
'screen_id' => $screen->id,
'active' => $active
);
// register metaboxes
foreach( $this->get_tools() as $tool ) {
// check active
if( $active && $active !== $tool->name ) continue;
// add metabox
add_meta_box( 'acf-admin-tool-' . $tool->name, $tool->title, array($this, 'metabox_html'), $screen->id, 'normal', 'default', array('tool' => $tool->name) );
}
// view
acf_get_view( 'html-admin-tools', $view );
}
/**
* meta_box_html
*
* description
*
* @date 10/10/17
* @since 5.6.3
*
* @param n/a
* @return n/a
*/
function metabox_html( $post, $metabox ) {
// vars
$tool = $this->get_tool($metabox['args']['tool']);
?>
<form method="post">
<?php $tool->html(); ?>
<?php acf_nonce_input( $tool->name ); ?>
</form>
<?php
}
}
// initialize
acf()->admin_tools = new acf_admin_tools();
endif; // class_exists check
/*
* acf_register_admin_tool
*
* alias of acf()->admin_tools->register_tool()
*
* @type function
* @date 31/5/17
* @since 5.6.0
*
* @param n/a
* @return n/a
*/
function acf_register_admin_tool( $class ) {
return acf()->admin_tools->register_tool( $class );
}
/*
* acf_get_admin_tools_url
*
* This function will return the admin URL to the tools page
*
* @type function
* @date 31/5/17
* @since 5.6.0
*
* @param n/a
* @return n/a
*/
function acf_get_admin_tools_url() {
return admin_url('edit.php?post_type=acf-field-group&page=acf-tools');
}
/*
* acf_get_admin_tool_url
*
* This function will return the admin URL to the tools page
*
* @type function
* @date 31/5/17
* @since 5.6.0
*
* @param n/a
* @return n/a
*/
function acf_get_admin_tool_url( $tool = '' ) {
return acf_get_admin_tools_url() . '&tool='.$tool;
}
?>

View File

@ -177,7 +177,7 @@ class acf_admin {
}
?>
<div class="notice is-dismissible <?php echo esc_attr($notice['class']); ?>"><?php echo $open . $notice['text'] . $close; ?></div>
<div class="notice is-dismissible <?php echo esc_attr($notice['class']); ?> acf-notice"><?php echo $open . $notice['text'] . $close; ?></div>
<?php
}

View File

@ -1,453 +0,0 @@
<?php
class acf_settings_tools {
var $view = 'settings-tools',
$data = array();
/*
* __construct
*
* Initialize filters, action, variables and includes
*
* @type function
* @date 23/06/12
* @since 5.0.0
*
* @param n/a
* @return n/a
*/
function __construct() {
// actions
add_action('admin_menu', array($this, 'admin_menu'));
}
/*
* admin_menu
*
* This function will add the ACF menu item to the WP admin
*
* @type action (admin_menu)
* @date 28/09/13
* @since 5.0.0
*
* @param n/a
* @return n/a
*/
function admin_menu() {
// bail early if no show_admin
if( !acf_get_setting('show_admin') ) return;
// add page
$page = add_submenu_page('edit.php?post_type=acf-field-group', __('Tools','acf'), __('Tools','acf'), acf_get_setting('capability'),'acf-settings-tools', array($this,'html') );
// actions
add_action('load-' . $page, array($this,'load'));
}
/*
* load
*
* This function will look at the $_POST data and run any functions if needed
*
* @type function
* @date 7/01/2014
* @since 5.0.0
*
* @param n/a
* @return n/a
*/
function load() {
// disable filters to ensure ACF loads raw data from DB
acf_disable_filters();
// run import / export
if( acf_verify_nonce('import') ) {
$this->import();
} elseif( acf_verify_nonce('export') ) {
if( acf_maybe_get_POST('generate') ) {
$this->generate();
} else {
$this->export();
}
}
// load acf scripts
acf_enqueue_scripts();
}
/*
* html
*
* This function will render the view
*
* @type function
* @date 7/01/2014
* @since 5.0.0
*
* @param n/a
* @return n/a
*/
function html() {
// load view
acf_get_view($this->view, $this->data);
}
/*
* export
*
* This function will export field groups to a .json file
*
* @type function
* @date 11/03/2014
* @since 5.0.0
*
* @param n/a
* @return n/a
*/
function export() {
// vars
$json = $this->get_json();
// validate
if( $json === false ) {
acf_add_admin_notice( __("No field groups selected", 'acf') , 'error');
return;
}
// set headers
$file_name = 'acf-export-' . date('Y-m-d') . '.json';
header( "Content-Description: File Transfer" );
header( "Content-Disposition: attachment; filename={$file_name}" );
header( "Content-Type: application/json; charset=utf-8" );
echo acf_json_encode( $json );
die;
}
/*
* import
*
* This function will import a .json file of field groups
*
* @type function
* @date 11/03/2014
* @since 5.0.0
*
* @param n/a
* @return n/a
*/
function import() {
// validate
if( empty($_FILES['acf_import_file']) ) {
acf_add_admin_notice( __("No file selected", 'acf') , 'error');
return;
}
// vars
$file = $_FILES['acf_import_file'];
// validate error
if( $file['error'] ) {
acf_add_admin_notice(__('Error uploading file. Please try again', 'acf'), 'error');
return;
}
// validate type
if( pathinfo($file['name'], PATHINFO_EXTENSION) !== 'json' ) {
acf_add_admin_notice(__('Incorrect file type', 'acf'), 'error');
return;
}
// read file
$json = file_get_contents( $file['tmp_name'] );
// decode json
$json = json_decode($json, true);
// validate json
if( empty($json) ) {
acf_add_admin_notice(__('Import file empty', 'acf'), 'error');
return;
}
// if importing an auto-json, wrap field group in array
if( isset($json['key']) ) {
$json = array( $json );
}
// vars
$ids = array();
$keys = array();
$imported = array();
// populate keys
foreach( $json as $field_group ) {
// append key
$keys[] = $field_group['key'];
}
// look for existing ids
foreach( $keys as $key ) {
// attempt find ID
$field_group = _acf_get_field_group_by_key( $key );
// bail early if no field group
if( !$field_group ) continue;
// append
$ids[ $key ] = $field_group['ID'];
}
// enable local
acf_enable_local();
// reset local (JSON class has already included .json field groups which may conflict)
acf_reset_local();
// add local field groups
foreach( $json as $field_group ) {
// add field group
acf_add_local_field_group( $field_group );
}
// loop over keys
foreach( $keys as $key ) {
// vars
$field_group = acf_get_local_field_group( $key );
// attempt get id
$id = acf_maybe_get( $ids, $key );
if( $id ) {
$field_group['ID'] = $id;
}
// append fields
if( acf_have_local_fields($key) ) {
$field_group['fields'] = acf_get_local_fields( $key );
}
// import
$field_group = acf_import_field_group( $field_group );
// append message
$imported[] = array(
'ID' => $field_group['ID'],
'title' => $field_group['title'],
'updated' => $id ? 1 : 0
);
}
// messages
if( !empty($imported) ) {
// vars
$links = array();
$count = count($imported);
$message = sprintf(_n( 'Imported 1 field group', 'Imported %s field groups', $count, 'acf' ), $count) . '.';
// populate links
foreach( $imported as $import ) {
$links[] = '<a href="' . admin_url("post.php?post={$import['ID']}&action=edit") . '" target="_blank">' . $import['title'] . '</a>';
}
// append links
$message .= ' ' . implode(', ', $links);
// add notice
acf_add_admin_notice( $message );
}
}
/*
* generate
*
* This function will generate PHP code to include in your theme
*
* @type function
* @date 11/03/2014
* @since 5.0.0
*
* @param n/a
* @return n/a
*/
function generate() {
// prevent default translation and fake __() within string
acf_update_setting('l10n_var_export', true);
// vars
$json = $this->get_json();
// validate
if( $json === false ) {
acf_add_admin_notice( __("No field groups selected", 'acf') , 'error');
return;
}
// update view
$this->view = 'settings-tools-export';
$this->data['field_groups'] = $json;
}
/*
* get_json
*
* This function will return the JSON data for given $_POST args
*
* @type function
* @date 3/02/2015
* @since 5.1.5
*
* @param $post_id (int)
* @return $post_id (int)
*/
function get_json() {
// vars
$keys = acf_maybe_get_POST('acf_export_keys');
$json = array();
// bail early if no keys
if( !$keys ) return false;
// construct JSON
foreach( $keys as $key ) {
// load field group
$field_group = acf_get_field_group( $key );
// validate field group
if( empty($field_group) ) continue;
// load fields
$field_group['fields'] = acf_get_fields( $field_group );
// prepare for export
$field_group = acf_prepare_field_group_for_export( $field_group );
// add to json array
$json[] = $field_group;
}
// return
return $json;
}
}
// initialize
new acf_settings_tools();
?>

View File

@ -0,0 +1,592 @@
<?php
if( ! defined( 'ABSPATH' ) ) exit; // Exit if accessed directly
if( ! class_exists('ACF_Admin_Tool_Export') ) :
class ACF_Admin_Tool_Export extends ACF_Admin_Tool {
/** @var string View context */
var $view = '';
/** @var array Export data */
var $json = '';
/**
* initialize
*
* This function will initialize the admin tool
*
* @date 10/10/17
* @since 5.6.3
*
* @param n/a
* @return n/a
*/
function initialize() {
// vars
$this->name = 'export';
$this->title = __("Export Field Groups", 'acf');
// active
if( $this->is_active() ) {
$this->title .= ' - ' . __('Generate PHP', 'acf');
}
}
/**
* submit
*
* This function will run when the tool's form has been submit
*
* @date 10/10/17
* @since 5.6.3
*
* @param n/a
* @return n/a
*/
function submit() {
// vars
$action = acf_maybe_get_POST('action');
// download
if( $action === 'download' ) {
$this->submit_download();
// generate
} elseif( $action === 'generate' ) {
$this->submit_generate();
}
}
/**
* submit_download
*
* description
*
* @date 17/10/17
* @since 5.6.3
*
* @param n/a
* @return n/a
*/
function submit_download() {
// vars
$json = $this->get_selected();
// validate
if( $json === false ) {
return acf_add_admin_notice( __("No field groups selected", 'acf') , 'error');
}
// headers
$file_name = 'acf-export-' . date('Y-m-d') . '.json';
header( "Content-Description: File Transfer" );
header( "Content-Disposition: attachment; filename={$file_name}" );
header( "Content-Type: application/json; charset=utf-8" );
// return
echo acf_json_encode( $json );
die;
}
/**
* submit_generate
*
* description
*
* @date 17/10/17
* @since 5.6.3
*
* @param n/a
* @return n/a
*/
function submit_generate() {
// vars
$keys = $this->get_selected_keys();
// validate
if( !$keys ) {
return acf_add_admin_notice( __("No field groups selected", 'acf') , 'error');
}
// url
$url = add_query_arg( 'keys', implode('+', $keys), $this->get_url() );
// redirect
wp_redirect( $url );
exit;
}
/**
* load
*
* description
*
* @date 21/10/17
* @since 5.6.3
*
* @param n/a
* @return n/a
*/
function load() {
// active
if( $this->is_active() ) {
// get selected keys
$selected = $this->get_selected_keys();
// add notice
if( $selected ) {
$count = count($selected);
$message = sprintf( _n( 'Exported 1 field group.', 'Exported %s field groups.', $count, 'acf' ), $count );
acf_add_admin_notice( $message );
}
}
}
/**
* html
*
* This function will output the metabox HTML
*
* @date 10/10/17
* @since 5.6.3
*
* @param n/a
* @return n/a
*/
function html() {
// single (generate PHP)
if( $this->is_active() ) {
$this->html_single();
// archive
} else {
$this->html_archive();
}
}
/**
* html_field_selection
*
* description
*
* @date 24/10/17
* @since 5.6.3
*
* @param n/a
* @return n/a
*/
function html_field_selection() {
// vars
$choices = array();
$selected = $this->get_selected_keys();
$field_groups = acf_get_field_groups();
// loop
if( $field_groups ) {
foreach( $field_groups as $field_group ) {
$choices[ $field_group['key'] ] = esc_html( $field_group['title'] );
}
}
// render
acf_render_field_wrap(array(
'label' => __('Select Field Groups', 'acf'),
'type' => 'checkbox',
'name' => 'keys',
'prefix' => false,
'value' => $selected,
'toggle' => true,
'choices' => $choices,
));
}
/**
* html_panel_selection
*
* description
*
* @date 21/10/17
* @since 5.6.3
*
* @param n/a
* @return n/a
*/
function html_panel_selection() {
?>
<div class="acf-panel acf-panel-selection">
<h3 class="acf-panel-title"><?php _e('Select Field Groups', 'acf') ?> <i class="dashicons dashicons-arrow-right"></i></h3>
<div class="acf-panel-inside">
<?php $this->html_field_selection(); ?>
</div>
</div>
<?php
}
/**
* html_panel_settings
*
* description
*
* @date 21/10/17
* @since 5.6.3
*
* @param n/a
* @return n/a
*/
function html_panel_settings() {
?>
<div class="acf-panel acf-panel-settings">
<h3 class="acf-panel-title"><?php _e('Settings', 'acf') ?> <i class="dashicons dashicons-arrow-right"></i></h3>
<div class="acf-panel-inside">
<?php
/*
acf_render_field_wrap(array(
'label' => __('Empty settings', 'acf'),
'type' => 'select',
'name' => 'minimal',
'prefix' => false,
'value' => '',
'choices' => array(
'all' => 'Include all settings',
'minimal' => 'Ignore empty settings'
)
));
*/
?>
</div>
</div>
<?php
}
/**
* html_archive
*
* description
*
* @date 20/10/17
* @since 5.6.3
*
* @param n/a
* @return n/a
*/
function html_archive() {
?>
<p><?php _e('Select the field groups you would like to export and then select your export method. Use the download button to export to a .json file which you can then import to another ACF installation. Use the generate button to export to PHP code which you can place in your theme.', 'acf'); ?></p>
<div class="acf-fields">
<?php $this->html_field_selection(); ?>
</div>
<p class="acf-submit">
<button type="submit" name="action" class="button button-primary" value="download"><?php _e('Export File', 'acf'); ?></button>
<button type="submit" name="action" class="button" value="generate"><?php _e('Generate PHP', 'acf'); ?></button>
</p>
<?php
}
/**
* html_single
*
* description
*
* @date 20/10/17
* @since 5.6.3
*
* @param n/a
* @return n/a
*/
function html_single() {
?>
<div class="acf-postbox-columns">
<div class="acf-postbox-main">
<?php $this->html_generate(); ?>
</div>
<div class="acf-postbox-side">
<?php $this->html_panel_selection(); ?>
<p class="acf-submit">
<button type="submit" name="action" class="button button-primary" value="generate"><?php _e('Generate PHP', 'acf'); ?></button>
</p>
</div>
</div>
<?php
}
/**
* html_generate
*
* description
*
* @date 17/10/17
* @since 5.6.3
*
* @param n/a
* @return n/a
*/
function html_generate() {
// prevent default translation and fake __() within string
acf_update_setting('l10n_var_export', true);
// vars
$json = $this->get_selected();
$str_replace = array(
" " => "\t",
"'!!__(!!\'" => "__('",
"!!\', !!\'" => "', '",
"!!\')!!'" => "')",
"array (" => "array("
);
$preg_replace = array(
'/([\t\r\n]+?)array/' => 'array',
'/[0-9]+ => array/' => 'array'
);
?>
<p><?php _e("The following code can be used to register a local version of the selected field group(s). A local field group can provide many benefits such as faster load times, version control & dynamic fields/settings. Simply copy and paste the following code to your theme's functions.php file or include it within an external file.", 'acf'); ?></p>
<textarea id="acf-export-textarea" readonly="true"><?php
echo "if( function_exists('acf_add_local_field_group') ):" . "\r\n" . "\r\n";
foreach( $json as $field_group ) {
// code
$code = var_export($field_group, true);
// change double spaces to tabs
$code = str_replace( array_keys($str_replace), array_values($str_replace), $code );
// correctly formats "=> array("
$code = preg_replace( array_keys($preg_replace), array_values($preg_replace), $code );
// esc_textarea
$code = esc_textarea( $code );
// echo
echo "acf_add_local_field_group({$code});" . "\r\n" . "\r\n";
}
echo "endif;";
?></textarea>
<p class="acf-submit">
<a class="button" id="acf-export-copy"><?php _e( 'Copy to clipboard', 'acf' ); ?></a>
</p>
<script type="text/javascript">
(function($){
// vars
var $a = $('#acf-export-copy');
var $textarea = $('#acf-export-textarea');
// remove $a if 'copy' is not supported
if( !document.queryCommandSupported('copy') ) {
return $a.remove();
}
// event
$a.on('click', function( e ){
// prevent default
e.preventDefault();
// select
$textarea.get(0).select();
// try
try {
// copy
var copy = document.execCommand('copy');
if( !copy ) return;
// tooltip
acf.tooltip.temp('Copied', $a);
} catch (err) {
// do nothing
}
});
})(jQuery);
</script>
<?php
}
/**
* get_selected_keys
*
* This function will return an array of field group keys that have been selected
*
* @date 20/10/17
* @since 5.6.3
*
* @param n/a
* @return n/a
*/
function get_selected_keys() {
// check $_POST
if( $keys = acf_maybe_get_POST('keys') ) {
return (array) $keys;
}
// check $_GET
if( $keys = acf_maybe_get_GET('keys') ) {
$keys = str_replace(' ', '+', $keys);
return explode('+', $keys);
}
// return
return false;
}
/**
* get_selected
*
* This function will return the JSON data for given $_POST args
*
* @date 17/10/17
* @since 5.6.3
*
* @param n/a
* @return array
*/
function get_selected() {
// vars
$selected = $this->get_selected_keys();
$json = array();
// bail early if no keys
if( !$selected ) return false;
// construct JSON
foreach( $selected as $key ) {
// load field group
$field_group = acf_get_field_group( $key );
// validate field group
if( empty($field_group) ) continue;
// load fields
$field_group['fields'] = acf_get_fields( $field_group );
// prepare for export
$field_group = acf_prepare_field_group_for_export( $field_group );
// add to json array
$json[] = $field_group;
}
// return
return $json;
}
}
// initialize
acf_register_admin_tool( 'acf_admin_tool_export' );
endif; // class_exists check
?>

View File

@ -0,0 +1,277 @@
<?php
if( ! defined( 'ABSPATH' ) ) exit; // Exit if accessed directly
if( ! class_exists('ACF_Admin_Tool_Import') ) :
class ACF_Admin_Tool_Import extends ACF_Admin_Tool {
/**
* initialize
*
* This function will initialize the admin tool
*
* @date 10/10/17
* @since 5.6.3
*
* @param n/a
* @return n/a
*/
function initialize() {
// vars
$this->name = 'import';
$this->title = __("Import Field Groups", 'acf');
$this->icon = 'dashicons-upload';
}
/**
* html
*
* This function will output the metabox HTML
*
* @date 10/10/17
* @since 5.6.3
*
* @param n/a
* @return n/a
*/
function html() {
// vars
$choices = array();
$field_groups = acf_get_field_groups();
// loop
if( $field_groups ) {
foreach( $field_groups as $field_group ) {
$choices[ $field_group['key'] ] = esc_html( $field_group['title'] );
}
}
// html
?>
<p><?php _e('Select the Advanced Custom Fields JSON file you would like to import. When you click the import button below, ACF will import the field groups.', 'acf'); ?></p>
<div class="acf-fields">
<?php
acf_render_field_wrap(array(
'label' => __('Select File', 'acf'),
'type' => 'file',
'name' => 'acf_import_file',
'value' => false,
'uploader' => 'basic',
));
?>
</div>
<p class="acf-submit">
<input type="submit" class="button button-primary" value="<?php _e('Import File', 'acf'); ?>" />
</p>
<?php
}
/**
* submit
*
* This function will run when the tool's form has been submit
*
* @date 10/10/17
* @since 5.6.3
*
* @param n/a
* @return n/a
*/
function submit() {
// validate
if( empty($_FILES['acf_import_file']['size']) ) {
acf_add_admin_notice( __("No file selected", 'acf') , 'error');
return;
}
// vars
$file = $_FILES['acf_import_file'];
// validate error
if( $file['error'] ) {
acf_add_admin_notice(__('Error uploading file. Please try again', 'acf'), 'error');
return;
}
// validate type
if( pathinfo($file['name'], PATHINFO_EXTENSION) !== 'json' ) {
acf_add_admin_notice(__('Incorrect file type', 'acf'), 'error');
return;
}
// read file
$json = file_get_contents( $file['tmp_name'] );
// decode json
$json = json_decode($json, true);
// validate json
if( empty($json) ) {
acf_add_admin_notice(__('Import file empty', 'acf'), 'error');
return;
}
// if importing an auto-json, wrap field group in array
if( isset($json['key']) ) {
$json = array( $json );
}
// vars
$ids = array();
$keys = array();
$imported = array();
// populate keys
foreach( $json as $field_group ) {
// append key
$keys[] = $field_group['key'];
}
// look for existing ids
foreach( $keys as $key ) {
// attempt find ID
$field_group = _acf_get_field_group_by_key( $key );
// bail early if no field group
if( !$field_group ) continue;
// append
$ids[ $key ] = $field_group['ID'];
}
// enable local
acf_enable_local();
// reset local (JSON class has already included .json field groups which may conflict)
acf_reset_local();
// add local field groups
foreach( $json as $field_group ) {
// add field group
acf_add_local_field_group( $field_group );
}
// loop over keys
foreach( $keys as $key ) {
// vars
$field_group = acf_get_local_field_group( $key );
// attempt get id
$id = acf_maybe_get( $ids, $key );
if( $id ) {
$field_group['ID'] = $id;
}
// append fields
if( acf_have_local_fields($key) ) {
$field_group['fields'] = acf_get_local_fields( $key );
}
// import
$field_group = acf_import_field_group( $field_group );
// append message
$imported[] = array(
'ID' => $field_group['ID'],
'title' => $field_group['title'],
'updated' => $id ? 1 : 0
);
}
// messages
if( !empty($imported) ) {
// vars
$links = array();
$count = count($imported);
$message = sprintf(_n( 'Imported 1 field group', 'Imported %s field groups', $count, 'acf' ), $count) . '.';
// populate links
foreach( $imported as $import ) {
$links[] = '<a href="' . admin_url("post.php?post={$import['ID']}&action=edit") . '" target="_blank">' . $import['title'] . '</a>';
}
// append links
$message .= ' ' . implode(', ', $links);
// add notice
acf_add_admin_notice( $message );
}
}
}
// initialize
acf_register_admin_tool( 'acf_admin_tool_import' );
endif; // class_exists check
?>

View File

@ -0,0 +1,195 @@
<?php
if( ! defined( 'ABSPATH' ) ) exit; // Exit if accessed directly
if( ! class_exists('ACF_Admin_Tool') ) :
class ACF_Admin_Tool {
/** @var string Tool name */
var $name = '';
/** @var string Tool title */
var $title = '';
/** @var string Dashicon slug */
//var $icon = '';
/** @var boolean Redirect form to single */
//var $redirect = false;
/**
* get_name
*
* This function will return the Tool's name
*
* @date 19/10/17
* @since 5.6.3
*
* @param n/a
* @return n/a
*/
function get_name() {
return $this->name;
}
/**
* get_title
*
* This function will return the Tool's title
*
* @date 19/10/17
* @since 5.6.3
*
* @param n/a
* @return n/a
*/
function get_title() {
return $this->title;
}
/**
* get_url
*
* This function will return the Tool's title
*
* @date 19/10/17
* @since 5.6.3
*
* @param n/a
* @return n/a
*/
function get_url() {
return acf_get_admin_tool_url( $this->name );
}
/**
* is_active
*
* This function will return true if the tool is active
*
* @date 19/10/17
* @since 5.6.3
*
* @param n/a
* @return bool
*/
function is_active() {
return acf_maybe_get_GET('tool') === $this->name;
}
/*
* __construct
*
* This function will setup the class functionality
*
* @type function
* @date 27/6/17
* @since 5.6.0
*
* @param n/a
* @return n/a
*/
function __construct() {
// initialize
$this->initialize();
}
/**
* initialize
*
* This function will initialize the admin tool
*
* @date 10/10/17
* @since 5.6.3
*
* @param n/a
* @return n/a
*/
function initialize() {
/* do nothing */
}
/**
* load
*
* This function is called during the admin page load
*
* @date 10/10/17
* @since 5.6.3
*
* @param n/a
* @return n/a
*/
function load() {
/* do nothing */
}
/**
* html
*
* This function will output the metabox HTML
*
* @date 10/10/17
* @since 5.6.3
*
* @param n/a
* @return n/a
*/
function html() {
}
/**
* submit
*
* This function will run when the tool's form has been submit
*
* @date 10/10/17
* @since 5.6.3
*
* @param n/a
* @return n/a
*/
function submit() {
}
}
endif; // class_exists check
?>

View File

@ -0,0 +1,27 @@
<?php
/**
* html-admin-tools
*
* View to output admin tools for both archive and single
*
* @date 20/10/17
* @since 5.6.3
*
* @param string $screen_id The screen ID used to display metaboxes
* @param string $active The active Tool
* @return n/a
*/
$class = $active ? 'single' : 'grid';
?>
<div class="wrap" id="acf-admin-tools">
<h1><?php _e('Tools', 'acf'); ?> <?php if( $active ): ?><a class="page-title-action" href="<?php echo acf_get_admin_tools_url(); ?>">Back to all tools</a><?php endif; ?></h1>
<div class="acf-meta-box-wrap -<?php echo $class; ?>">
<?php do_meta_boxes( $screen_id, 'normal', '' ); ?>
</div>
</div>

View File

@ -1,108 +0,0 @@
<?php
// replace
$str_replace = array(
" " => "\t",
"'!!__(!!\'" => "__('",
"!!\', !!\'" => "', '",
"!!\')!!'" => "')"
);
$preg_replace = array(
'/([\t\r\n]+?)array/' => 'array',
'/[0-9]+ => array/' => 'array'
);
?>
<div class="wrap acf-settings-wrap">
<h1><?php _e('Tools', 'acf'); ?></h1>
<div class="acf-box">
<div class="title">
<h3><?php _e('Export Field Groups to PHP', 'acf'); ?></h3>
</div>
<div class="inner">
<p><?php _e("The following code can be used to register a local version of the selected field group(s). A local field group can provide many benefits such as faster load times, version control & dynamic fields/settings. Simply copy and paste the following code to your theme's functions.php file or include it within an external file.", 'acf'); ?></p>
<textarea class="pre" readonly="true"><?php
echo "if( function_exists('acf_add_local_field_group') ):" . "\r\n" . "\r\n";
foreach( $field_groups as $field_group ) {
// code
$code = var_export($field_group, true);
// change double spaces to tabs
$code = str_replace( array_keys($str_replace), array_values($str_replace), $code );
// correctly formats "=> array("
$code = preg_replace( array_keys($preg_replace), array_values($preg_replace), $code );
// esc_textarea
$code = esc_textarea( $code );
// echo
echo "acf_add_local_field_group({$code});" . "\r\n" . "\r\n";
}
echo "endif;";
?></textarea>
</div>
</div>
</div>
<div class="acf-hidden">
<style type="text/css">
textarea.pre {
width: 100%;
padding: 15px;
font-size: 14px;
line-height: 1.5em;
resize: none;
}
</style>
<script type="text/javascript">
(function($){
var i = 0;
$(document).on('click', 'textarea.pre', function(){
if( i == 0 )
{
i++;
$(this).focus().select();
return false;
}
});
$(document).on('keyup', 'textarea.pre', function(){
$(this).height( 0 );
$(this).height( this.scrollHeight );
});
$(document).ready(function(){
$('textarea.pre').trigger('keyup');
});
})(jQuery);
</script>
</div>

View File

@ -1,98 +0,0 @@
<?php
// vars
$field = array(
'label' => __('Select Field Groups', 'acf'),
'type' => 'checkbox',
'name' => 'acf_export_keys',
'prefix' => false,
'value' => false,
'toggle' => true,
'choices' => array(),
);
$field_groups = acf_get_field_groups();
// populate choices
if( $field_groups ) {
foreach( $field_groups as $field_group ) {
$field['choices'][ $field_group['key'] ] = esc_html( $field_group['title'] );
}
}
?>
<div class="wrap acf-settings-wrap">
<h1><?php _e('Tools', 'acf'); ?></h1>
<div class="acf-box" id="acf-export-field-groups">
<div class="title">
<h3><?php _e('Export Field Groups', 'acf'); ?></h3>
</div>
<div class="inner">
<p><?php _e('Select the field groups you would like to export and then select your export method. Use the download button to export to a .json file which you can then import to another ACF installation. Use the generate button to export to PHP code which you can place in your theme.', 'acf'); ?></p>
<form method="post" action="">
<div class="acf-hidden">
<?php acf_nonce_input('export'); ?>
</div>
<table class="form-table">
<tbody>
<?php acf_render_field_wrap( $field, 'tr' ); ?>
<tr>
<th></th>
<td>
<input type="submit" name="download" class="button button-primary" value="<?php _e('Download export file', 'acf'); ?>" />
<input type="submit" name="generate" class="button button-primary" value="<?php _e('Generate export code', 'acf'); ?>" />
</td>
</tr>
</tbody>
</table>
</form>
</div>
</div>
<div class="acf-box">
<div class="title">
<h3><?php _e('Import Field Groups', 'acf'); ?></h3>
</div>
<div class="inner">
<p><?php _e('Select the Advanced Custom Fields JSON file you would like to import. When you click the import button below, ACF will import the field groups.', 'acf'); ?></p>
<form method="post" action="" enctype="multipart/form-data">
<div class="acf-hidden">
<?php acf_nonce_input('import'); ?>
</div>
<table class="form-table">
<tbody>
<tr>
<th>
<label><?php _e('Select File', 'acf'); ?></label>
</th>
<td>
<input type="file" name="acf_import_file">
</td>
</tr>
<tr>
<th></th>
<td>
<input type="submit" class="button button-primary" value="<?php _e('Import', 'acf'); ?>" />
</td>
</tr>
</tbody>
</table>
</form>
</div>
</div>
</div>

View File

@ -510,14 +510,17 @@ function acf_render_field_wrap( $field, $el = 'div', $instruction = 'label' ) {
?>
<<?php echo $el; ?> <?php acf_esc_attr_e($wrapper); ?>>
<?php if( $show_label ): ?>
<<?php echo $el2; ?> class="acf-label">
<?php acf_the_field_wrap_label( $field ); ?>
<?php if( $instruction == 'label' ) acf_the_field_wrap_instructions( $field ); ?>
</<?php echo $el2; ?>>
<<?php echo $el2; ?> class="acf-label"><?php
acf_render_field_label( $field );
if( $instruction == 'label' ) acf_render_field_instructions( $field );
?></<?php echo $el2; ?>>
<?php endif; ?>
<<?php echo $el2; ?> class="acf-input">
<?php acf_render_field( $field ); ?>
<?php if( $instruction == 'field' ) acf_the_field_wrap_instructions( $field ); ?>
<?php if( $instruction == 'field' ) acf_render_field_instructions( $field ); ?>
<?php if( !empty($field['conditional_logic']) ): ?>
<script type="text/javascript">
if( typeof acf !== 'undefined' ) {
@ -533,7 +536,7 @@ function acf_render_field_wrap( $field, $el = 'div', $instruction = 'label' ) {
/**
* acf_render_field_wrap_label
* acf_render_field_label
*
* This function will maybe output the field's label
*
@ -544,7 +547,7 @@ function acf_render_field_wrap( $field, $el = 'div', $instruction = 'label' ) {
* @return n/a
*/
function acf_the_field_wrap_label( $field ) {
function acf_render_field_label( $field ) {
// vars
$label = acf_get_field_label( $field );
@ -552,16 +555,20 @@ function acf_the_field_wrap_label( $field ) {
// check
if( $label ) {
echo '<label' . ($field['id'] ? ' for="' . esc_attr($field['id']) . '"' : '' ) . '>' . acf_esc_html($label) . '</label>';
}
}
/* depreciated since 5.6.5 */
function acf_render_field_wrap_label( $field ) {
acf_render_field_label( $field );
}
/**
* acf_render_field_wrap_description
* acf_render_field_instructions
*
* This function will maybe output the field's instructions
*
@ -572,7 +579,7 @@ function acf_the_field_wrap_label( $field ) {
* @return n/a
*/
function acf_the_field_wrap_instructions( $field ) {
function acf_render_field_instructions( $field ) {
// vars
$instructions = $field['instructions'];
@ -580,11 +587,15 @@ function acf_the_field_wrap_instructions( $field ) {
// check
if( $instructions ) {
echo '<p class="description">' . acf_esc_html($instructions) . '</p>';
}
}
/* depreciated since 5.6.5 */
function acf_render_field_wrap_description( $field ) {
acf_render_field_instructions( $field );
}
@ -2010,6 +2021,4 @@ function acf_prefix_fields( &$fields, $prefix = 'acf' ) {
}
?>

View File

@ -538,7 +538,8 @@ function acf_nonce_input( $nonce = '' ) {
function acf_extract_var( &$array, $key, $default = null ) {
// check if exists
if( is_array($array) && isset($array[ $key ]) ) {
// - uses array_key_exists to extract NULL values (isset will fail)
if( is_array($array) && array_key_exists($key, $array) ) {
// store value
$v = $array[ $key ];
@ -1648,7 +1649,7 @@ function _acf_query_remove_post_type( $sql ) {
function acf_get_grouped_posts( $args ) {
// vars
$r = array();
$data = array();
// defaults
@ -1667,18 +1668,19 @@ function acf_get_grouped_posts( $args ) {
// find array of post_type
$post_types = acf_get_array( $args['post_type'] );
$post_types_labels = acf_get_pretty_post_types($post_types);
$is_single_post_type = ( count($post_types) == 1 );
// attachment doesn't work if it is the only item in an array
if( count($post_types) == 1 ) {
if( $is_single_post_type) {
$args['post_type'] = current($post_types);
}
// add filter to orderby post type
if( !$is_single_post_type ) {
add_filter('posts_orderby', '_acf_orderby_post_type', 10, 2);
}
// get posts
@ -1686,7 +1688,9 @@ function acf_get_grouped_posts( $args ) {
// remove this filter (only once)
remove_filter('posts_orderby', '_acf_orderby_post_type');
if( !$is_single_post_type ) {
remove_filter('posts_orderby', '_acf_orderby_post_type', 10, 2);
}
// loop
@ -1698,14 +1702,10 @@ function acf_get_grouped_posts( $args ) {
// populate $this_posts
foreach( array_keys($posts) as $key ) {
if( $posts[ $key ]->post_type == $post_type ) {
$this_posts[] = acf_extract_var( $posts, $key );
foreach( $posts as $post ) {
if( $post->post_type == $post_type ) {
$this_posts[] = $post;
}
}
@ -1718,71 +1718,62 @@ function acf_get_grouped_posts( $args ) {
if( is_post_type_hierarchical($post_type) && empty($args['s'])) {
// vars
$match_id = $this_posts[ 0 ]->ID;
$post_id = $this_posts[0]->ID;
$parent_id = acf_maybe_get($args, 'post_parent', 0);
$offset = 0;
$length = count($this_posts);
$parent = acf_maybe_get( $args, 'post_parent', 0 );
// get all posts
$all_args = array_merge($args, array(
// get all posts from this post type
$all_posts = get_posts(array_merge($args, array(
'posts_per_page' => -1,
'paged' => 0,
'post_type' => $post_type
));
$all_posts = get_posts( $all_args );
)));
// loop over posts and update $offset
foreach( $all_posts as $offset => $p ) {
if( $p->ID == $match_id ) break;
// find starting point (offset)
foreach( $all_posts as $i => $post ) {
if( $post->ID == $post_id ) {
$offset = $i;
break;
}
}
// order posts
$ordered_posts = get_page_children( $parent, $all_posts );
$ordered_posts = get_page_children($parent_id, $all_posts);
// check for empty array (possible if parent did not exist within original data)
if( !empty($ordered_posts) ) {
// compare aray lengths
// if $ordered_posts is smaller than $all_posts, WP has lost posts during the get_page_children() function
// this is possible when get_post( $args ) filter out parents (via taxonomy, meta and other search parameters)
if( count($ordered_posts) == count($all_posts) ) {
$this_posts = array_slice($ordered_posts, $offset, $length);
}
}
// populate $this_posts
foreach( array_keys($this_posts) as $key ) {
// extract post
$post = acf_extract_var( $this_posts, $key );
// add to group
foreach( $this_posts as $post ) {
$this_group[ $post->ID ] = $post;
}
// group by post type
$post_type_name = $post_types_labels[ $post_type ];
$r[ $post_type_name ] = $this_group;
$label = $post_types_labels[ $post_type ];
$data[ $label ] = $this_group;
}
// return
return $r;
return $data;
}
function _acf_orderby_post_type( $ordeby, $wp_query ) {
// global
@ -1850,6 +1841,8 @@ function acf_get_post_title( $post = 0, $is_search = false ) {
// add parent
/*
removed in 5.6.5 as not used by the UI
if( $is_search && !empty($ancestors) ) {
// reverse
@ -1868,6 +1861,7 @@ function acf_get_post_title( $post = 0, $is_search = false ) {
$append .= ' | ' . __('Parent', 'acf') . ': ' . implode(' / ', $ancestors);
}
*/
}

View File

@ -230,15 +230,20 @@ function acf_update_option( $option = '', $value = '', $autoload = null ) {
function acf_get_value( $post_id = 0, $field ) {
// allow filter to short-circuit load_value logic
//$value = apply_filters( "acf/pre_load_value", null, $post_id, $field );
//if( $value !== null ) {
// return $value;
//}
// vars
$cache_key = "get_value/post_id={$post_id}/name={$field['name']}";
// return early if cache is found
if( acf_isset_cache($cache_key) ) {
return acf_get_cache($cache_key);
}
@ -252,9 +257,7 @@ function acf_get_value( $post_id = 0, $field ) {
// no value? try default_value
if( $value === null && isset($field['default_value']) ) {
$value = $field['default_value'];
}

View File

@ -63,6 +63,10 @@ class acf_field_file extends acf_field {
$uploader = acf_get_setting('uploader');
// allow custom uploader
$uploader = acf_maybe_get($field, 'uploader', $uploader);
// enqueue
if( $uploader == 'wp' ) {
acf_enqueue_uploader();

View File

@ -407,8 +407,8 @@ class acf_field__group extends acf_field {
?>
<th <?php acf_esc_attr_e( $atts ); ?>>
<?php acf_the_field_wrap_label( $sub_field ); ?>
<?php acf_the_field_wrap_instructions( $sub_field ); ?>
<?php acf_render_field_label( $sub_field ); ?>
<?php acf_render_field_instructions( $sub_field ); ?>
</th>
<?php endforeach; ?>
</tr>
@ -538,6 +538,40 @@ class acf_field__group extends acf_field {
}
/*
* duplicate_field()
*
* This filter is appied to the $field before it is duplicated and saved to the database
*
* @type filter
* @since 3.6
* @date 23/01/13
*
* @param $field - the field array holding all the field options
*
* @return $field - the modified field
*/
function duplicate_field( $field ) {
// get sub fields
$sub_fields = acf_extract_var( $field, 'sub_fields' );
// save field to get ID
$field = acf_update_field( $field );
// duplicate sub fields
acf_duplicate_fields( $sub_fields, $field['ID'] );
// return
return $field;
}
/*
* prepare_field_for_export
*

View File

@ -713,7 +713,7 @@ class acf_field_taxonomy extends acf_field {
'show_option_none' => sprintf( _x('No %s', 'No terms', 'acf'), strtolower($taxonomy_obj->labels->name) ),
'hide_empty' => false,
'style' => 'none',
'walker' => new acf_taxonomy_field_walker( $field ),
'walker' => new ACF_Taxonomy_Field_Walker( $field ),
);

View File

@ -278,17 +278,19 @@ class acf_form_comment {
// bail early if not valid nonce
if( !acf_verify_nonce('comment') ) {
return $comment_id;
}
// kses
if( isset($_POST['acf']) ) {
$_POST['acf'] = wp_kses_post_deep( $_POST['acf'] );
}
// validate and save
if( acf_validate_save_post(true) ) {
acf_save_post( "comment_{$comment_id}" );
}
}

View File

@ -109,7 +109,8 @@ class acf_form_front {
'honeypot' => true,
'html_updated_message' => '<div id="message" class="updated"><p>%s</p></div>', // 5.5.10
'html_submit_button' => '<input type="submit" class="acf-button button button-primary button-large" value="%s" />', // 5.5.10
'html_submit_spinner' => '<span class="acf-spinner"></span>' // 5.5.10
'html_submit_spinner' => '<span class="acf-spinner"></span>', // 5.5.10
'kses' => true // 5.6.5
));
$args['form_attributes'] = wp_parse_args( $args['form_attributes'], array(
@ -359,20 +360,34 @@ class acf_form_front {
function check_submit_form() {
// bail ealry if form not submit
if( !isset($_POST['_acf_form']) ) return;
// verify nonce
if( !acf_verify_nonce('acf_form') ) return;
// bail ealry if form not submit
if( empty($_POST['_acf_form']) ) return;
// load form
$form = json_decode( acf_decrypt($_POST['_acf_form']), true );
// bail ealry if form is corrupt
if( empty($form) ) return;
// kses
if( $form['kses'] && isset($_POST['acf']) ) {
$_POST['acf'] = wp_kses_post_deep( $_POST['acf'] );
}
// validate data
acf_validate_save_post(true);
// submit
$this->submit_form();
$this->submit_form( $form );
}
@ -390,19 +405,7 @@ class acf_form_front {
* @return n/a
*/
function submit_form() {
// vars
$form = @json_decode(acf_decrypt($_POST['_acf_form']), true);
// bail ealry if form is corrupt
if( empty($form) ) return;
// filter
$form = apply_filters('acf/pre_submit_form', $form);
function submit_form( $form ) {
// vars
$post_id = acf_maybe_get($form, 'post_id', 0);

View File

@ -66,7 +66,7 @@ class acf_location_page_type extends acf_location {
// compare
$match = ( $front_page === $post->ID );
$result = ( $front_page === $post->ID );
} elseif( $rule['value'] == 'posts_page') {
@ -75,7 +75,7 @@ class acf_location_page_type extends acf_location {
// compare
$match = ( $posts_page === $post->ID );
$result = ( $posts_page === $post->ID );
} elseif( $rule['value'] == 'top_level') {
@ -84,7 +84,7 @@ class acf_location_page_type extends acf_location {
// compare
$match = ( $page_parent == 0 );
$result = ( $page_parent == 0 );
} elseif( $rule['value'] == 'parent' ) {
@ -98,7 +98,7 @@ class acf_location_page_type extends acf_location {
// compare
$match = !empty( $children );
$result = !empty( $children );
} elseif( $rule['value'] == 'child') {
@ -107,21 +107,21 @@ class acf_location_page_type extends acf_location {
// compare
$match = ( $page_parent > 0 );
$result = ( $page_parent > 0 );
}
// reverse if 'not equal to'
if( $rule['operator'] === '!=' ) {
if( $rule['operator'] == '!=' ) {
$match = !$match;
$result = !$result;
}
// return
return $match;
return $result;
}

View File

@ -73,7 +73,7 @@ class acf_location_post_taxonomy extends acf_location {
// not ajax, load real post's terms
if( !$screen['ajax'] ) {
if( $terms === null ) {
$terms = wp_get_post_terms( $post_id, $term->taxonomy, array('fields' => 'ids') );

View File

@ -43,9 +43,9 @@ class acf_location {
// filters
$this->add_filter('acf/location/rule_match', true, array($this, 'rule_match'), 10, 3);
$this->add_filter('acf/location/rule_operators', true, array($this, 'rule_operators'), 10, 2);
$this->add_filter('acf/location/rule_values', true, array($this, 'rule_values'), 10, 2);
$this->add_filter('acf/location/rule_match', true, array($this, 'rule_match'), 5, 3);
$this->add_filter('acf/location/rule_operators', true, array($this, 'rule_operators'), 5, 2);
$this->add_filter('acf/location/rule_values', true, array($this, 'rule_values'), 5, 2);
}

View File

@ -2,9 +2,9 @@
if( ! defined( 'ABSPATH' ) ) exit; // Exit if accessed directly
if( ! class_exists('acf_taxonomy_field_walker') ) :
if( ! class_exists('ACF_Taxonomy_Field_Walker') ) :
class acf_taxonomy_field_walker extends Walker {
class ACF_Taxonomy_Field_Walker extends Walker {
var $field = null,
$tree_type = 'category',

Binary file not shown.

View File

@ -3,15 +3,15 @@ msgstr ""
"Project-Id-Version: Advanced Custom Fields Pro v5.6.2 Formal\n"
"Report-Msgid-Bugs-To: http://support.advancedcustomfields.com\n"
"POT-Creation-Date: 2017-09-17 14:06+0200\n"
"PO-Revision-Date: 2017-09-19 13:13+0200\n"
"Last-Translator: Ralf Koller <r.koller@gmail.com>\n"
"PO-Revision-Date: 2017-10-24 11:48+1000\n"
"Last-Translator: Elliot Condon <e@elliotcondon.com>\n"
"Language-Team: Ralf Koller <r.koller@gmail.com>\n"
"Language: de_DE\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
"X-Generator: Poedit 2.0.3\n"
"X-Generator: Poedit 1.8.1\n"
"X-Poedit-SourceCharset: UTF-8\n"
"X-Poedit-KeywordsList: __;_e;_n:1,2;_x:1,2c;_ex:1,2c;_nx:4c,1,2;esc_attr__;"
"esc_attr_e;esc_attr_x:1,2c;esc_html__;esc_html_e;esc_html_x:1,2c;_n_noop:1,2;"
@ -206,8 +206,7 @@ msgid "Field group title is required"
msgstr "Es ist ein Titel für die Feld-Gruppe erforderlich"
# @ acf
#: includes/admin/admin-field-group.php:273
#: includes/api/api-field-group.php:751
#: includes/admin/admin-field-group.php:273 includes/api/api-field-group.php:751
msgid "copy"
msgstr "kopieren"
@ -357,12 +356,11 @@ msgstr "Status"
#: includes/admin/admin-field-groups.php:607
msgid "Customise WordPress with powerful, professional and intuitive fields."
msgstr ""
"WordPress durch leistungsfähige, professionelle und zugleich intuitive "
"Felder erweitern."
"WordPress durch leistungsfähige, professionelle und zugleich intuitive Felder "
"erweitern."
# @ acf
#: includes/admin/admin-field-groups.php:609
#: includes/admin/settings-info.php:76
#: includes/admin/admin-field-groups.php:609 includes/admin/settings-info.php:76
#: pro/admin/views/html-settings-updates.php:107
msgid "Changelog"
msgstr "Versionshinweise"
@ -370,7 +368,7 @@ msgstr "Versionshinweise"
#: includes/admin/admin-field-groups.php:614
#, php-format
msgid "See what's new in <a href=\"%s\">version %s</a>."
msgstr "Was gibt es Neues in <a href=„%s“>Version %s</a>."
msgstr "Was gibt es Neues in <a href=\"%s\">Version %s</a>."
# @ acf
#: includes/admin/admin-field-groups.php:617
@ -445,8 +443,7 @@ msgid "Bulk Actions"
msgstr "Massenverarbeitung"
# @ acf
#: includes/admin/admin.php:113
#: includes/admin/views/field-group-options.php:118
#: includes/admin/admin.php:113 includes/admin/views/field-group-options.php:118
msgid "Custom Fields"
msgstr "Eigene Felder"
@ -713,11 +710,11 @@ msgstr "Typ"
# @ acf
#: includes/admin/views/field-group-fields.php:14
msgid ""
"No fields. Click the <strong>+ Add Field</strong> button to create your "
"first field."
"No fields. Click the <strong>+ Add Field</strong> button to create your first "
"field."
msgstr ""
"Es sind noch keine Felder angelegt. Klicken Sie den <strong>+ Feld "
"hinzufügen-Button</strong> und erstellen Sie Ihr erstes Feld."
"Es sind noch keine Felder angelegt. Klicken Sie den <strong>+ Feld hinzufügen-"
"Button</strong> und erstellen Sie Ihr erstes Feld."
# @ acf
#: includes/admin/views/field-group-fields.php:31
@ -732,8 +729,8 @@ msgstr "Regeln"
# @ acf
#: includes/admin/views/field-group-locations.php:10
msgid ""
"Create a set of rules to determine which edit screens will use these "
"advanced custom fields"
"Create a set of rules to determine which edit screens will use these advanced "
"custom fields"
msgstr ""
"Erstelle ein Regelwerk das festlegt welche Bearbeitungs-Ansichten diese Feld-"
"Gruppe nutzen dürfen"
@ -826,8 +823,7 @@ msgstr "Verstecken"
# @ acf
#: includes/admin/views/field-group-options.php:108
msgid "<b>Select</b> items to <b>hide</b> them from the edit screen."
msgstr ""
"<strong>Ausgewählte</strong> Elemente werden <strong>versteckt</strong>."
msgstr "<strong>Ausgewählte</strong> Elemente werden <strong>versteckt</strong>."
# @ acf
#: includes/admin/views/field-group-options.php:108
@ -835,9 +831,9 @@ msgid ""
"If multiple field groups appear on an edit screen, the first field group's "
"options will be used (the one with the lowest order number)"
msgstr ""
"Sind für einen Bearbeiten-Dialog mehrere Felder-Gruppen definiert, werden "
"die Optionen der ersten Felder-Gruppe angewendet (die mit der niedrigsten "
"Nummer für die Reihenfolge)."
"Sind für einen Bearbeiten-Dialog mehrere Felder-Gruppen definiert, werden die "
"Optionen der ersten Felder-Gruppe angewendet (die mit der niedrigsten Nummer "
"für die Reihenfolge)."
# @ acf
#: includes/admin/views/field-group-options.php:115
@ -920,16 +916,15 @@ msgid "Upgrade Sites"
msgstr "Websites upgraden"
# @ acf
#: includes/admin/views/install-network.php:9
#: includes/admin/views/install.php:3
#: includes/admin/views/install-network.php:9 includes/admin/views/install.php:3
msgid "Advanced Custom Fields Database Upgrade"
msgstr "Advanced Custom Fields Datenbank-Upgrade"
#: includes/admin/views/install-network.php:11
#, php-format
msgid ""
"The following sites require a DB upgrade. Check the ones you want to update "
"and then click %s."
"The following sites require a DB upgrade. Check the ones you want to update and "
"then click %s."
msgstr ""
"Folgende Websites erfordern ein Upgrade der Datenbank. Markieren Sie die "
"gewünschten Seiten und klicken Sie dann %s."
@ -954,17 +949,16 @@ msgstr "Die Website ist aktuell"
# @ acf
#: includes/admin/views/install-network.php:63
#, php-format
msgid ""
"Database Upgrade complete. <a href=\"%s\">Return to network dashboard</a>"
msgid "Database Upgrade complete. <a href=\"%s\">Return to network dashboard</a>"
msgstr ""
"Upgrade der Datenbank fertiggestellt. <a href=„%s“>Zum Netzwerk Dashboard</a>"
"Upgrade der Datenbank fertiggestellt. <a href=\"%s\">Zum Netzwerk Dashboard</a>"
# @ acf
#: includes/admin/views/install-network.php:102
#: includes/admin/views/install-notice.php:42
msgid ""
"It is strongly recommended that you backup your database before proceeding. "
"Are you sure you wish to run the updater now?"
"It is strongly recommended that you backup your database before proceeding. Are "
"you sure you wish to run the updater now?"
msgstr ""
"Es wird dringend empfohlen, dass Sie ihre Datenbank sichern, bevor Sie "
"fortfahren. Sind sie sicher, dass Sie jetzt das Upgrade durchführen wollen?"
@ -1019,8 +1013,8 @@ msgstr "Danke für die Aktualisierung auf %s v%s!"
# @ acf
#: includes/admin/views/install-notice.php:28
msgid ""
"Before you start using the new awesome features, please update your database "
"to the newest version."
"Before you start using the new awesome features, please update your database to "
"the newest version."
msgstr ""
"Bevor Sie die großartigen neuen Funktionen nutzen können ist ein Upgrade der "
"Datenbank notwendig."
@ -1043,8 +1037,8 @@ msgstr "Aufgaben für das Upgrade einlesen…"
#, php-format
msgid "Database Upgrade complete. <a href=\"%s\">See what's new</a>"
msgstr ""
"Datenbank-Upgrade abgeschlossen. <a href=\"%s\">Schauen Sie nach was es "
"Neues gibt</a>"
"Datenbank-Upgrade abgeschlossen. <a href=\"%s\">Schauen Sie nach was es Neues "
"gibt</a>"
# @ acf
#: includes/admin/views/settings-addons.php:17
@ -1065,17 +1059,16 @@ msgstr "Willkommen bei Advanced Custom Fields"
#: includes/admin/views/settings-info.php:4
#, php-format
msgid ""
"Thank you for updating! ACF %s is bigger and better than ever before. We "
"hope you like it."
"Thank you for updating! ACF %s is bigger and better than ever before. We hope "
"you like it."
msgstr ""
"Vielen Dank fürs Aktualisieren! ACF %s ist größer und besser als je zuvor. "
"Wir hoffen es wird ihnen gefallen."
"Vielen Dank fürs Aktualisieren! ACF %s ist größer und besser als je zuvor. Wir "
"hoffen es wird ihnen gefallen."
# @ acf
#: includes/admin/views/settings-info.php:17
msgid "A smoother custom field experience"
msgstr ""
"Eine neue Dimension der reibungslosen Nutzung benutzerdefinierter Felder"
msgstr "Eine neue Dimension der reibungslosen Nutzung benutzerdefinierter Felder"
# @ acf
#: includes/admin/views/settings-info.php:22
@ -1086,8 +1079,8 @@ msgstr "Verbesserte Benutzerfreundlichkeit"
#: includes/admin/views/settings-info.php:23
msgid ""
"Including the popular Select2 library has improved both usability and speed "
"across a number of field types including post object, page link, taxonomy "
"and select."
"across a number of field types including post object, page link, taxonomy and "
"select."
msgstr ""
"Durch die Einführung der beliebten Select2 Bibliothek wurde sowohl die "
"Benutzerfreundlichkeit als auch die Geschwindigkeit einiger Feldtypen wie "
@ -1102,9 +1095,9 @@ msgstr "Verbessertes Design"
# @ acf
#: includes/admin/views/settings-info.php:28
msgid ""
"Many fields have undergone a visual refresh to make ACF look better than "
"ever! Noticeable changes are seen on the gallery, relationship and oEmbed "
"(new) fields!"
"Many fields have undergone a visual refresh to make ACF look better than ever! "
"Noticeable changes are seen on the gallery, relationship and oEmbed (new) "
"fields!"
msgstr ""
"Viele Felder wurden visuell überarbeitet, damit ACF besser denn je aussieht! "
"Die markantesten Änderungen erfuhren das Galerie-, Beziehungs- sowie das "
@ -1118,14 +1111,14 @@ msgstr "Verbesserte Datenstruktur"
# @ acf
#: includes/admin/views/settings-info.php:33
msgid ""
"Redesigning the data architecture has allowed sub fields to live "
"independently from their parents. This allows you to drag and drop fields in "
"and out of parent fields!"
"Redesigning the data architecture has allowed sub fields to live independently "
"from their parents. This allows you to drag and drop fields in and out of "
"parent fields!"
msgstr ""
"Die Neugestaltung der Datenarchitektur erlaubt es, dass Felder unabhängig "
"von ihren übergeordneten Feldern existieren können. Dies ermöglicht, dass "
"Felder per Drag-and-Drop, in und aus ihren übergeordneten Feldern verschoben "
"werden können!"
"Die Neugestaltung der Datenarchitektur erlaubt es, dass Felder unabhängig von "
"ihren übergeordneten Feldern existieren können. Dies ermöglicht, dass Felder "
"per Drag-and-Drop, in und aus ihren übergeordneten Feldern verschoben werden "
"können!"
# @ acf
#: includes/admin/views/settings-info.php:39
@ -1149,14 +1142,14 @@ msgstr ""
#: includes/admin/views/settings-info.php:46
#, php-format
msgid ""
"All 4 premium add-ons have been combined into a new <a href=\"%s\">Pro "
"version of ACF</a>. With both personal and developer licenses available, "
"premium functionality is more affordable and accessible than ever before!"
"All 4 premium add-ons have been combined into a new <a href=\"%s\">Pro version "
"of ACF</a>. With both personal and developer licenses available, premium "
"functionality is more affordable and accessible than ever before!"
msgstr ""
"Alle vier, vormals separat erhältlichen, Premium-Add-ons wurden in der neuen "
"<a href=\"%s\">Pro-Version von ACF</a> zusammengefasst. Besagte Premium-"
"Funktionalität, erhältlich in einer Einzel- sowie einer Entwickler-Lizenz, "
"ist somit erschwinglicher denn je!"
"Alle vier, vormals separat erhältlichen, Premium-Add-ons wurden in der neuen <a "
"href=\"%s\">Pro-Version von ACF</a> zusammengefasst. Besagte Premium-"
"Funktionalität, erhältlich in einer Einzel- sowie einer Entwickler-Lizenz, ist "
"somit erschwinglicher denn je!"
# @ acf
#: includes/admin/views/settings-info.php:50
@ -1189,24 +1182,24 @@ msgstr "Kinderleichte Aktualisierung"
#: includes/admin/views/settings-info.php:57
#, php-format
msgid ""
"To help make upgrading easy, <a href=\"%s\">login to your store account</a> "
"and claim a free copy of ACF PRO!"
"To help make upgrading easy, <a href=\"%s\">login to your store account</a> and "
"claim a free copy of ACF PRO!"
msgstr ""
"Wir haben den Aktualisierungsprozess so einfach wie möglich gehalten; <a "
"href=\"%s\">melden Sie sich mit Ihrem Store-Account an</a> und fordern Sie "
"ein Gratisexemplar von ACF PRO an!"
"Wir haben den Aktualisierungsprozess so einfach wie möglich gehalten; <a href="
"\"%s\">melden Sie sich mit Ihrem Store-Account an</a> und fordern Sie ein "
"Gratisexemplar von ACF PRO an!"
# @ acf
#: includes/admin/views/settings-info.php:58
#, php-format
msgid ""
"We also wrote an <a href=\"%s\">upgrade guide</a> to answer any questions, "
"but if you do have one, please contact our support team via the <a href=\"%s"
"\">help desk</a>"
"We also wrote an <a href=\"%s\">upgrade guide</a> to answer any questions, but "
"if you do have one, please contact our support team via the <a href=\"%s\">help "
"desk</a>"
msgstr ""
"Um möglichen Fragen zu begegnen haben wir haben einen <a href=„%s“>Upgrade-"
"Leitfaden (Engl.)</a> erstellt. Sollten dennoch Fragen auftreten, "
"kontaktieren Sie bitte unser <a href=„%s“> Support-Team </a>"
"Um möglichen Fragen zu begegnen haben wir haben einen <a href=\"%s\">Upgrade-"
"Leitfaden (Engl.)</a> erstellt. Sollten dennoch Fragen auftreten, kontaktieren "
"Sie bitte unser <a href=\"%s\"> Support-Team </a>"
# @ acf
#: includes/admin/views/settings-info.php:66
@ -1244,8 +1237,7 @@ msgstr "Lokales JSON"
# @ acf
#: includes/admin/views/settings-info.php:82
msgid "New auto export to JSON feature improves speed"
msgstr ""
"Ein neuer automatischer Export nach JSON verbessert die Geschwindigkeit"
msgstr "Ein neuer automatischer Export nach JSON verbessert die Geschwindigkeit"
# @ acf
#: includes/admin/views/settings-info.php:88
@ -1255,8 +1247,7 @@ msgstr "Verbesserte Versionskontrolle"
# @ acf
#: includes/admin/views/settings-info.php:89
msgid ""
"New auto export to JSON feature allows field settings to be version "
"controlled"
"New auto export to JSON feature allows field settings to be version controlled"
msgstr ""
"Die neue JSON Export Funktionalität erlaubt die Versionskontrolle von Feld-"
"Einstellungen"
@ -1296,8 +1287,7 @@ msgstr "Neue Galerie"
# @ acf
#: includes/admin/views/settings-info.php:111
msgid "The gallery field has undergone a much needed facelift"
msgstr ""
"Das Galerie-Feld wurde einem längst überfälligen Face-Lifting unterzogen"
msgstr "Das Galerie-Feld wurde einem längst überfälligen Face-Lifting unterzogen"
# @ acf
#: includes/admin/views/settings-info.php:115
@ -1332,8 +1322,8 @@ msgstr "Bessere Validierung"
#: includes/admin/views/settings-info.php:128
msgid "Form validation is now done via PHP + AJAX in favour of only JS"
msgstr ""
"Die Formular-Validierung wird nun mit Hilfe von PHP + AJAX erledigt, "
"anstelle nur JS zu verwenden"
"Die Formular-Validierung wird nun mit Hilfe von PHP + AJAX erledigt, anstelle "
"nur JS zu verwenden"
# @ acf
#: includes/admin/views/settings-info.php:132
@ -1342,11 +1332,10 @@ msgstr "Beziehungs-Feld"
# @ acf
#: includes/admin/views/settings-info.php:133
msgid ""
"New Relationship field setting for 'Filters' (Search, Post Type, Taxonomy)"
msgid "New Relationship field setting for 'Filters' (Search, Post Type, Taxonomy)"
msgstr ""
"Neue Einstellungen innerhalb des Beziehungs-Feldes um nach Suche, Beitrags-"
"Typ und oder Taxonomie filtern zu können"
"Neue Einstellungen innerhalb des Beziehungs-Feldes um nach Suche, Beitrags-Typ "
"und oder Taxonomie filtern zu können"
# @ acf
#: includes/admin/views/settings-info.php:139
@ -1359,8 +1348,8 @@ msgid ""
"New field group functionality allows you to move a field between groups & "
"parents"
msgstr ""
"Die neue Feld-Gruppen-Funktionalität erlaubt es ein Feld zwischen Gruppen "
"und übergeordneten Gruppen frei zu verschieben"
"Die neue Feld-Gruppen-Funktionalität erlaubt es ein Feld zwischen Gruppen und "
"übergeordneten Gruppen frei zu verschieben"
# @ acf
#: includes/admin/views/settings-info.php:144
@ -1372,8 +1361,8 @@ msgstr "Seiten-Link"
#: includes/admin/views/settings-info.php:145
msgid "New archives group in page_link field selection"
msgstr ""
"Im neuen Seitenlink-Feld werden alle Archiv-URL's der verfügbaren Custom "
"Post Types in einer Options-Gruppe zusammengefasst"
"Im neuen Seitenlink-Feld werden alle Archiv-URL's der verfügbaren Custom Post "
"Types in einer Options-Gruppe zusammengefasst"
# @ acf
#: includes/admin/views/settings-info.php:149
@ -1406,14 +1395,14 @@ msgid ""
"The following code can be used to register a local version of the selected "
"field group(s). A local field group can provide many benefits such as faster "
"load times, version control & dynamic fields/settings. Simply copy and paste "
"the following code to your theme's functions.php file or include it within "
"an external file."
"the following code to your theme's functions.php file or include it within an "
"external file."
msgstr ""
"Der nachfolgende Code kann dazu verwendet werden eine lokale Version der "
"ausgewählten Feld-Gruppe(n) zu registrieren. Eine lokale Feld-Gruppe bietet "
"viele Vorteile; schnellere Ladezeiten, Versionskontrolle sowie dynamische "
"Felder und Einstellungen. Kopieren Sie einfach folgenden Code und füge ihn "
"in die functions.php oder eine externe Datei in Ihrem Theme ein."
"Felder und Einstellungen. Kopieren Sie einfach folgenden Code und füge ihn in "
"die functions.php oder eine externe Datei in Ihrem Theme ein."
# @ acf
#: includes/admin/views/settings-tools.php:5
@ -1433,12 +1422,12 @@ msgid ""
"import to another ACF installation. Use the generate button to export to PHP "
"code which you can place in your theme."
msgstr ""
"Entscheiden Sie zuerst welche Felder-Gruppen Sie exportieren möchten und "
"wählen im Anschluss das Format in das exportiert werden soll. Klicken Sie "
"den \"JSON-Datei exportieren\"-Button, um eine JSON-Datei zu erhalten, "
"welche Sie dann in einer anderen ACF-Installation importieren können. Wählen "
"Sie den \"Erstelle PHP-Code\"-Button, um PHP-Code zu erhalten, den Sie im "
"Anschluss in der functions.php Ihres Themes einfügen können."
"Entscheiden Sie zuerst welche Felder-Gruppen Sie exportieren möchten und wählen "
"im Anschluss das Format in das exportiert werden soll. Klicken Sie den \"JSON-"
"Datei exportieren\"-Button, um eine JSON-Datei zu erhalten, welche Sie dann in "
"einer anderen ACF-Installation importieren können. Wählen Sie den \"Erstelle "
"PHP-Code\"-Button, um PHP-Code zu erhalten, den Sie im Anschluss in der "
"functions.php Ihres Themes einfügen können."
# @ acf
#: includes/admin/views/settings-tools.php:50
@ -1458,12 +1447,12 @@ msgstr "Feld-Gruppen importieren"
# @ acf
#: includes/admin/views/settings-tools.php:67
msgid ""
"Select the Advanced Custom Fields JSON file you would like to import. When "
"you click the import button below, ACF will import the field groups."
"Select the Advanced Custom Fields JSON file you would like to import. When you "
"click the import button below, ACF will import the field groups."
msgstr ""
"Wählen Sie die Advanced Custom Fields JSON-Datei aus, welche Sie importieren "
"möchten. Nach dem Klicken des Importieren-Buttons wird ACF die Felder-"
"Gruppen hinzufügen."
"möchten. Nach dem Klicken des Importieren-Buttons wird ACF die Felder-Gruppen "
"hinzufügen."
# @ acf
#: includes/admin/views/settings-tools.php:77
@ -2105,8 +2094,7 @@ msgstr "Minimum"
#: includes/fields/class-acf-field-file.php:241
msgid "Restrict which files can be uploaded"
msgstr ""
"Erlaubt nur das Hochladen von Dateien die die angegebenen Eigenschaften "
"erfüllen"
"Erlaubt nur das Hochladen von Dateien die die angegebenen Eigenschaften erfüllen"
# @ acf
#: includes/fields/class-acf-field-file.php:240
@ -2128,8 +2116,7 @@ msgstr "Erlaubte Datei-Formate"
#: pro/fields/class-acf-field-gallery.php:728
msgid "Comma separated list. Leave blank for all types"
msgstr ""
"Komma separierte Liste; ein leeres Feld bedeutet alle Dateiformate sind "
"erlaubt"
"Komma separierte Liste; ein leeres Feld bedeutet alle Dateiformate sind erlaubt"
# @ acf
#: includes/fields/class-acf-field-google-map.php:25
@ -2202,8 +2189,8 @@ msgstr "Legt die Höhe der Karte fest"
#: includes/fields/class-acf-field-group.php:25
msgid "Group"
msgstr ""
"Gruppe (zeigt die ausgewählten Felder in einer Gruppe innerhalb dieses "
"Feldes an)"
"Gruppe (zeigt die ausgewählten Felder in einer Gruppe innerhalb dieses Feldes "
"an)"
# @ acf
#: includes/fields/class-acf-field-group.php:461
@ -2310,8 +2297,7 @@ msgstr "Legt fest welche Maße die Vorschau in der Bearbeitungs-Ansicht hat"
#: pro/fields/class-acf-field-gallery.php:699
msgid "Restrict which images can be uploaded"
msgstr ""
"Erlaubt nur das Hochladen von Bildern die die angegebenen Eigenschaften "
"erfüllen"
"Erlaubt nur das Hochladen von Bildern die die angegebenen Eigenschaften erfüllen"
# @ acf
#: includes/fields/class-acf-field-image.php:231
@ -2392,8 +2378,7 @@ msgstr "HTML enkodieren"
#: includes/fields/class-acf-field-message.php:125
msgid "Allow HTML markup to display as visible text instead of rendering"
msgstr ""
"Bei aktiver Option wird HTML Code als solcher angezeigt und nicht "
"interpretiert"
"Bei aktiver Option wird HTML Code als solcher angezeigt und nicht interpretiert"
# @ acf
#: includes/fields/class-acf-field-number.php:25
@ -2662,16 +2647,15 @@ msgstr "Auswahl"
msgctxt "Select2 JS matches_1"
msgid "One result is available, press enter to select it."
msgstr ""
"Es ist ein Ergebnis verfügbar, drücken Sie die Eingabetaste um es "
"auszuwählen."
"Es ist ein Ergebnis verfügbar, drücken Sie die Eingabetaste um es auszuwählen."
#: includes/fields/class-acf-field-select.php:39
#, php-format
msgctxt "Select2 JS matches_n"
msgid "%d results are available, use up and down arrow keys to navigate."
msgstr ""
"Es sind %d Ergebnisse verfügbar, benutzen Sie die Pfeiltasten um nach oben "
"und unten zu navigieren."
"Es sind %d Ergebnisse verfügbar, benutzen Sie die Pfeiltasten um nach oben und "
"unten zu navigieren."
#: includes/fields/class-acf-field-select.php:40
msgctxt "Select2 JS matches_0"
@ -2770,15 +2754,14 @@ msgid ""
"Use \"Tab Fields\" to better organize your edit screen by grouping fields "
"together."
msgstr ""
"Mit \"Tab Feldern\" können Felder für eine bessere Struktur im Editor in "
"Tabs zusammengefasst werden."
"Mit \"Tab Feldern\" können Felder für eine bessere Struktur im Editor in Tabs "
"zusammengefasst werden."
# @ acf
#: includes/fields/class-acf-field-tab.php:84
msgid ""
"All fields following this \"tab field\" (or until another \"tab field\" is "
"defined) will be grouped together using this field's label as the tab "
"heading."
"defined) will be grouped together using this field's label as the tab heading."
msgstr ""
"Alle Felder, die auf dieses \"Tab Feld\" folgen (oder bis ein weiteres \"Tab "
"Feld\" definiert ist), werden in einem Tab mit dem Namen dieses Felds "
@ -3102,8 +3085,7 @@ msgid "Validation successful"
msgstr "Überprüfung erfolgreich"
# @ acf
#: includes/input.php:262 includes/validation.php:285
#: includes/validation.php:296
#: includes/input.php:262 includes/validation.php:285 includes/validation.php:296
msgid "Validation failed"
msgstr "Überprüfung fehlgeschlagen"
@ -3343,15 +3325,14 @@ msgid ""
"No Custom Field Groups found for this options page. <a href=\"%s\">Create a "
"Custom Field Group</a>"
msgstr ""
"Keine Feld-Gruppen für die Options-Seite gefunden. <a href=\"%s\">Erstelle "
"eine Feld-Gruppe</a>"
"Keine Feld-Gruppen für die Options-Seite gefunden. <a href=\"%s\">Erstelle eine "
"Feld-Gruppe</a>"
# @ acf
#: pro/admin/admin-settings-updates.php:78
msgid "<b>Error</b>. Could not connect to update server"
msgstr ""
"<b>Fehler</b>. Es konnte keine Verbindung zum Update-Server hergestellt "
"werden"
"<b>Fehler</b>. Es konnte keine Verbindung zum Update-Server hergestellt werden"
# @ acf
#: pro/admin/admin-settings-updates.php:162
@ -3377,13 +3358,11 @@ msgstr "Lizenzinformation"
#, php-format
msgid ""
"To unlock updates, please enter your license key below. If you don't have a "
"licence key, please see <a href=\"%s\" target=\"_blank\">details & pricing</"
"a>."
"licence key, please see <a href=\"%s\" target=\"_blank\">details & pricing</a>."
msgstr ""
"Um die Update-Fähigkeit freizuschalten geben Sie bitte unten Ihren "
"Lizenzschlüssel ein. Falls Sie keinen besitzen informieren Sie sich bitte "
"hier hinsichtlich der <a href=„%s“ target=„_blank“>Preise und Einzelheiten</"
"a>."
"Lizenzschlüssel ein. Falls Sie keinen besitzen informieren Sie sich bitte hier "
"hinsichtlich der <a href=\"%s\" target=\"_blank\">Preise und Einzelheiten</a>."
# @ acf
#: pro/admin/views/html-settings-updates.php:29
@ -3453,8 +3432,8 @@ msgstr "Geben Sie den Stil an mit dem das Klon-Feld angezeigt werden soll"
#: pro/fields/class-acf-field-clone.php:830
msgid "Group (displays selected fields in a group within this field)"
msgstr ""
"Gruppe (zeigt die ausgewählten Felder in einer Gruppe innerhalb dieses "
"Feldes an)"
"Gruppe (zeigt die ausgewählten Felder in einer Gruppe innerhalb dieses Feldes "
"an)"
#: pro/fields/class-acf-field-clone.php:831
msgid "Seamless (replaces this field with selected fields)"
@ -3762,14 +3741,14 @@ msgstr "Optionen aktualisiert"
#: pro/updates.php:97
#, php-format
msgid ""
"To enable updates, please enter your license key on the <a href=\"%s"
"\">Updates</a> page. If you don't have a licence key, please see <a href=\"%s"
"\">details & pricing</a>."
"To enable updates, please enter your license key on the <a href=\"%s\">Updates</"
"a> page. If you don't have a licence key, please see <a href=\"%s\">details & "
"pricing</a>."
msgstr ""
"Um die Update-Fähigkeit freizuschalten geben Sie bitte Ihren Lizenzschlüssel "
"auf der <a href=„%s“>Aktualisierungen</a> Seite ein. Falls Sie keinen "
"besitzen informieren Sie sich bitte hier hinsichtlich der <a href=„%s“ "
"target=„_blank“>Preise und Einzelheiten</a>."
"auf der <a href=\"%s\">Aktualisierungen</a> Seite ein. Falls Sie keinen "
"besitzen informieren Sie sich bitte hier hinsichtlich der <a href=\"%s\" target="
"\"_blank\">Preise und Einzelheiten</a>."
#. Plugin URI of the plugin/theme
msgid "https://www.advancedcustomfields.com/"
@ -3815,8 +3794,8 @@ msgstr "http://www.elliotcondon.com/"
#~ msgid "Term meta upgrade not possible (termmeta table does not exist)"
#~ msgstr ""
#~ "Term Meta-Aktualisierung war nicht möglich (die termmeta-Tabelle "
#~ "existiert nicht)"
#~ "Term Meta-Aktualisierung war nicht möglich (die termmeta-Tabelle existiert "
#~ "nicht)"
# @ acf
#~ msgid "Error"
@ -3831,8 +3810,8 @@ msgstr "http://www.elliotcondon.com/"
#~ "Error validating ACF PRO license URL (website does not match). Please re-"
#~ "activate your license"
#~ msgstr ""
#~ "Fehler bei der Überprüfung der ACF PRO Lizenz URL (Webseiten stimmen "
#~ "nicht überein). Bitte reaktivieren sie ihre Lizenz"
#~ "Fehler bei der Überprüfung der ACF PRO Lizenz URL (Webseiten stimmen nicht "
#~ "überein). Bitte reaktivieren sie ihre Lizenz"
#~ msgid "Disabled"
#~ msgstr "Deaktiviert"
@ -3865,8 +3844,8 @@ msgstr "http://www.elliotcondon.com/"
#~ "Error validating license URL (website does not match). Please re-activate "
#~ "your license"
#~ msgstr ""
#~ "Fehler bei der Überprüfung der Lizenz-URL (Webseite stimmt nicht "
#~ "überein). Bitte reaktivieren Sie ihre Lizenz"
#~ "Fehler bei der Überprüfung der Lizenz-URL (Webseite stimmt nicht überein). "
#~ "Bitte reaktivieren Sie ihre Lizenz"
# @ acf
#~ msgid "<b>Success</b>. Import tool added %s field groups: %s"
@ -3874,11 +3853,11 @@ msgstr "http://www.elliotcondon.com/"
# @ acf
#~ msgid ""
#~ "<b>Warning</b>. Import tool detected %s field groups already exist and "
#~ "have been ignored: %s"
#~ "<b>Warning</b>. Import tool detected %s field groups already exist and have "
#~ "been ignored: %s"
#~ msgstr ""
#~ "<b>Warnung</b>. Der Import hat %s Feld-Gruppen erkannt, die schon "
#~ "vorhanden sind und diese ignoriert: %s"
#~ "<b>Warnung</b>. Der Import hat %s Feld-Gruppen erkannt, die schon vorhanden "
#~ "sind und diese ignoriert: %s"
# @ acf
#~ msgid "Upgrade ACF"
@ -3890,11 +3869,11 @@ msgstr "http://www.elliotcondon.com/"
# @ acf
#~ msgid ""
#~ "The following sites require a DB upgrade. Check the ones you want to "
#~ "update and then click “Upgrade Database”."
#~ "The following sites require a DB upgrade. Check the ones you want to update "
#~ "and then click “Upgrade Database”."
#~ msgstr ""
#~ "Die folgenden Seiten erfordern eine Datenbank- Aktualisierung. Markieren "
#~ "Sie die gewünschten Seiten und klicken \\\"Aktualisiere Datenbank\\\"."
#~ "Die folgenden Seiten erfordern eine Datenbank- Aktualisierung. Markieren Sie "
#~ "die gewünschten Seiten und klicken \\\"Aktualisiere Datenbank\\\"."
# @ acf
#~ msgid "Select"
@ -3903,8 +3882,8 @@ msgstr "http://www.elliotcondon.com/"
# @ acf
#~ msgid "<b>Connection Error</b>. Sorry, please try again"
#~ msgstr ""
#~ "<b>Verbindungsfehler</b>. Entschuldigung, versuchen Sie es bitte später "
#~ "noch einmal"
#~ "<b>Verbindungsfehler</b>. Entschuldigung, versuchen Sie es bitte später noch "
#~ "einmal"
# @ acf
#~ msgid "Done"
@ -3955,8 +3934,8 @@ msgstr "http://www.elliotcondon.com/"
# @ acf
#~ msgid ""
#~ "To unlock updates, please enter your license key below. If you don't have "
#~ "a licence key, please see"
#~ "To unlock updates, please enter your license key below. If you don't have a "
#~ "licence key, please see"
#~ msgstr ""
#~ "Um die Aktualisierungs-Fähigkeit freizuschalten, tragen Sie bitte Ihren "
#~ "Lizenzschlüssel im darunterliegenden Feld ein. Sollten Sie noch keinen "
@ -3969,13 +3948,13 @@ msgstr "http://www.elliotcondon.com/"
# @ acf
#~ msgid ""
#~ "To enable updates, please enter your license key on the <a href=\"%s"
#~ "\">Updates</a> page. If you don't have a licence key, please see <a href="
#~ "\"%s\">details & pricing</a>"
#~ "\">Updates</a> page. If you don't have a licence key, please see <a href=\"%s"
#~ "\">details & pricing</a>"
#~ msgstr ""
#~ "Um die Aktualisierungen freizuschalten, tragen Sie bitte Ihren "
#~ "Lizenzschlüssel auf der <a href=\"%s\">Aktualisierungen</a>-Seite ein. "
#~ "Sollten Sie noch keinen Lizenzschlüssel besitzen, informieren Sie sich "
#~ "bitte hier über die <a href=\"%s\">Details und Preise</a>"
#~ "Sollten Sie noch keinen Lizenzschlüssel besitzen, informieren Sie sich bitte "
#~ "hier über die <a href=\"%s\">Details und Preise</a>"
# @ acf
#~ msgid "Advanced Custom Fields Pro"
@ -4005,8 +3984,7 @@ msgstr "http://www.elliotcondon.com/"
#~ msgstr "Synchronisierung verfügbar"
# @ acf
#~ msgid ""
#~ "Please note that all text will first be passed through the wp function "
#~ msgid "Please note that all text will first be passed through the wp function "
#~ msgstr ""
#~ "Bitte beachten Sie, dass der gesamte Text zuerst durch eine WordPress "
#~ "Funktion gefiltert wird. Siehe: "

Binary file not shown.

File diff suppressed because it is too large Load Diff

Binary file not shown.

File diff suppressed because it is too large Load Diff

Binary file not shown.

File diff suppressed because it is too large Load Diff

Binary file not shown.

File diff suppressed because it is too large Load Diff

Binary file not shown.

File diff suppressed because it is too large Load Diff

Binary file not shown.

File diff suppressed because it is too large Load Diff

View File

@ -29,10 +29,10 @@ Use the Advanced Custom Fields plugin to take full control of your WordPress edi
* [Website](https://www.advancedcustomfields.com)
* [Documentation](https://www.advancedcustomfields.com/resources/)
* [Support](https://support.advancedcustomfields.com)
* [ACF PRO](https://www.advancedcustomfields.com/resources/pro/)
* [ACF PRO](https://www.advancedcustomfields.com/pro/)
= PRO =
The Advanced Custom Fields plugin is also available in a professional version which includes more fields, more functionality, and more flexibility! [Learn more](https://www.advancedcustomfields.com/resources/pro/)
The Advanced Custom Fields plugin is also available in a professional version which includes more fields, more functionality, and more flexibility! [Learn more](https://www.advancedcustomfields.com/pro/)
== Installation ==
@ -66,6 +66,25 @@ From your WordPress dashboard
== Changelog ==
= 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
@ -102,7 +121,7 @@ From your WordPress dashboard
* 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
* 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