This commit is contained in:
Elliot Condon 2016-05-19 10:22:28 +02:00 committed by Remco Tolsma
parent cb662fef2b
commit f377c0d080
47 changed files with 8270 additions and 3615 deletions

View File

@ -1,9 +1,9 @@
<?php <?php
/* /*
Plugin Name: Advanced Custom Fields PRO Plugin Name: Advanced Custom Fields PRO
Plugin URI: http://www.advancedcustomfields.com/ Plugin URI: https://www.advancedcustomfields.com/
Description: Customise WordPress with powerful, professional and intuitive fields Description: Customise WordPress with powerful, professional and intuitive fields
Version: 5.3.7 Version: 5.3.8.1
Author: Elliot Condon Author: Elliot Condon
Author URI: http://www.elliotcondon.com/ Author URI: http://www.elliotcondon.com/
Copyright: Elliot Condon Copyright: Elliot Condon
@ -58,7 +58,7 @@ class acf {
// basic // basic
'name' => __('Advanced Custom Fields', 'acf'), 'name' => __('Advanced Custom Fields', 'acf'),
'version' => '5.3.7', 'version' => '5.3.8.1',
// urls // urls
'basename' => plugin_basename( __FILE__ ), 'basename' => plugin_basename( __FILE__ ),

View File

@ -622,7 +622,7 @@ class acf_admin_field_groups {
<h2><?php echo acf_get_setting('name'); ?></h2> <h2><?php echo acf_get_setting('name'); ?></h2>
<h3><?php _e("Changelog",'acf'); ?></h3> <h3><?php _e("Changelog",'acf'); ?></h3>
<p><?php _e("See what's new in",'acf'); ?> <a href="<?php echo admin_url('edit.php?post_type=acf-field-group&page=acf-settings-info&tab=changelog'); ?>"><?php _e("version",'acf'); ?> <?php echo acf_get_setting('version'); ?></a> <p><?php printf(__('See what\'s new in <a href="%s">version %s</a>.','acf'), admin_url('edit.php?post_type=acf-field-group&page=acf-settings-info&tab=changelog'), acf_get_setting('version')); ?></p>
<h3><?php _e("Resources",'acf'); ?></h3> <h3><?php _e("Resources",'acf'); ?></h3>
<ul> <ul>

View File

@ -79,7 +79,7 @@ class acf_settings_addons {
// load json // load json
$request = wp_remote_post( 'http://assets.advancedcustomfields.com/add-ons/add-ons.json' ); $request = wp_remote_post( 'https://assets.advancedcustomfields.com/add-ons/add-ons.json' );
// validate // validate
if( is_wp_error($request) || wp_remote_retrieve_response_code($request) != 200) if( is_wp_error($request) || wp_remote_retrieve_response_code($request) != 200)

View File

@ -110,11 +110,42 @@ class acf_admin_update {
// add page // add page
add_submenu_page('update-core.php', __('Upgrade ACF','acf'), __('Upgrade ACF','acf'), acf_get_setting('capability'),'acf-upgrade', array($this,'network_html')); $page = add_submenu_page('update-core.php', __('Upgrade ACF','acf'), __('Upgrade ACF','acf'), acf_get_setting('capability'),'acf-upgrade', array($this,'network_html'));
// actions
add_action('load-' . $page, array($this,'network_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 network_load() {
// hide upgrade
remove_action('network_admin_notices', array($this, 'network_admin_notices'), 1);
// load acf scripts
acf_enqueue_scripts();
}
/* /*
* network_admin_notices * network_admin_notices
* *
@ -129,15 +160,7 @@ class acf_admin_update {
*/ */
function network_admin_notices() { function network_admin_notices() {
// bail ealry if already on update page
if( acf_is_screen('admin_page_acf-upgrade-network') ) {
return;
}
// view // view
$view = array( $view = array(
'button_text' => __("Review sites & upgrade", 'acf'), 'button_text' => __("Review sites & upgrade", 'acf'),
@ -222,10 +245,6 @@ class acf_admin_update {
); );
// enqueue
acf_enqueue_scripts();
// load view // load view
acf_get_view('update-network', $view); acf_get_view('update-network', $view);
@ -295,7 +314,36 @@ class acf_admin_update {
// add page // add page
add_submenu_page('edit.php?post_type=acf-field-group', __('Upgrade','acf'), __('Upgrade','acf'), acf_get_setting('capability'),'acf-upgrade', array($this,'html') ); $page = add_submenu_page('edit.php?post_type=acf-field-group', __('Upgrade','acf'), __('Upgrade','acf'), acf_get_setting('capability'),'acf-upgrade', 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() {
// hide upgrade
remove_action('admin_notices', array($this, 'admin_notices'), 1);
// load acf scripts
acf_enqueue_scripts();
} }
@ -315,14 +363,6 @@ class acf_admin_update {
function admin_notices() { function admin_notices() {
// bail ealry if already on update page
if( acf_is_screen('custom-fields_page_acf-upgrade') ) {
return;
}
// view // view
$view = array( $view = array(
'button_text' => __("Upgrade Database", 'acf'), 'button_text' => __("Upgrade Database", 'acf'),
@ -358,10 +398,6 @@ class acf_admin_update {
); );
// enqueue
acf_enqueue_scripts();
// load view // load view
acf_get_view('update', $view); acf_get_view('update', $view);
@ -393,7 +429,9 @@ class acf_admin_update {
// validate // validate
if( !wp_verify_nonce($options['nonce'], 'acf_upgrade') ) { if( !wp_verify_nonce($options['nonce'], 'acf_upgrade') ) {
wp_send_json_error(); wp_send_json_error(array(
'message' => __('Error validating request', 'acf')
));
} }
@ -415,7 +453,7 @@ class acf_admin_update {
if( empty($updates) ) { if( empty($updates) ) {
wp_send_json_error(array( wp_send_json_error(array(
'message' => 'No updates available' 'message' => __('No updates available', 'acf')
)); ));
} }
@ -432,7 +470,7 @@ class acf_admin_update {
if( !file_exists($path) ) { if( !file_exists($path) ) {
wp_send_json_error(array( wp_send_json_error(array(
'message' => 'Error loading update' 'message' => __('Error loading update', 'acf')
)); ));
} }
@ -525,7 +563,7 @@ class acf_admin_update {
$obj->slug = $_GET['plugin']; $obj->slug = $_GET['plugin'];
$obj->new_version = $rollback; $obj->new_version = $rollback;
$obj->url = 'https://wordpress.org/plugins/advanced-custom-fields'; $obj->url = 'https://wordpress.org/plugins/advanced-custom-fields';
$obj->package = 'http://downloads.wordpress.org/plugin/advanced-custom-fields.' . $rollback . '.zip';; $obj->package = 'https://downloads.wordpress.org/plugin/advanced-custom-fields.' . $rollback . '.zip';;
// add to transient // add to transient

View File

@ -46,7 +46,7 @@ $atts['class'] = str_replace('_', '-', $atts['class']);
<div class="handle"> <div class="handle">
<ul class="acf-hl acf-tbody"> <ul class="acf-hl acf-tbody">
<li class="li-field-order"> <li class="li-field-order">
<span class="acf-icon acf-sortable-handle"><?php echo ($i + 1); ?></span> <span class="acf-icon acf-sortable-handle" title="<?php _e('Drag to reorder','acf'); ?>"><?php echo ($i + 1); ?></span>
<pre class="pre-field-key"><?php echo $field['key']; ?></pre> <pre class="pre-field-key"><?php echo $field['key']; ?></pre>
</li> </li>
<li class="li-field-label"> <li class="li-field-label">

View File

@ -24,17 +24,17 @@ extract( $args );
<div class="feature-section acf-three-col"> <div class="feature-section acf-three-col">
<div> <div>
<img src="http://assets.advancedcustomfields.com/info/5.0.0/select2.png"> <img src="https://assets.advancedcustomfields.com/info/5.0.0/select2.png">
<h3><?php _e("Improved Usability", 'acf'); ?></h3> <h3><?php _e("Improved Usability", 'acf'); ?></h3>
<p><?php _e("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.", 'acf'); ?></p> <p><?php _e("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.", 'acf'); ?></p>
</div> </div>
<div> <div>
<img src="http://assets.advancedcustomfields.com/info/5.0.0/design.png"> <img src="https://assets.advancedcustomfields.com/info/5.0.0/design.png">
<h3><?php _e("Improved Design", 'acf'); ?></h3> <h3><?php _e("Improved Design", 'acf'); ?></h3>
<p><?php _e("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!", 'acf'); ?></p> <p><?php _e("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!", 'acf'); ?></p>
</div> </div>
<div> <div>
<img src="http://assets.advancedcustomfields.com/info/5.0.0/sub-fields.png"> <img src="https://assets.advancedcustomfields.com/info/5.0.0/sub-fields.png">
<h3><?php _e("Improved Data", 'acf'); ?></h3> <h3><?php _e("Improved Data", 'acf'); ?></h3>
<p><?php _e("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!", 'acf'); ?></p> <p><?php _e("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!", 'acf'); ?></p>
</div> </div>
@ -49,19 +49,19 @@ extract( $args );
<div> <div>
<h3><?php _e("Introducing ACF PRO", 'acf'); ?></h3> <h3><?php _e("Introducing ACF PRO", 'acf'); ?></h3>
<p><?php _e("We're changing the way premium functionality is delivered in an exciting way!", 'acf'); ?></p> <p><?php _e("We're changing the way premium functionality is delivered in an exciting way!", 'acf'); ?></p>
<p><?php printf(__('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!', 'acf'), esc_url('http://www.advancedcustomfields.com/pro')); ?></p> <p><?php printf(__('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!', 'acf'), esc_url('https://www.advancedcustomfields.com/pro')); ?></p>
</div> </div>
<div> <div>
<h3><?php _e("Powerful Features", 'acf'); ?></h3> <h3><?php _e("Powerful Features", 'acf'); ?></h3>
<p><?php _e("ACF PRO contains powerful features such as repeatable data, flexible content layouts, a beautiful gallery field and the ability to create extra admin options pages!", 'acf'); ?></p> <p><?php _e("ACF PRO contains powerful features such as repeatable data, flexible content layouts, a beautiful gallery field and the ability to create extra admin options pages!", 'acf'); ?></p>
<p><?php printf(__('Read more about <a href="%s">ACF PRO features</a>.', 'acf'), esc_url('http://www.advancedcustomfields.com/pro')); ?></p> <p><?php printf(__('Read more about <a href="%s">ACF PRO features</a>.', 'acf'), esc_url('https://www.advancedcustomfields.com/pro')); ?></p>
</div> </div>
<div> <div>
<h3><?php _e("Easy Upgrading", 'acf'); ?></h3> <h3><?php _e("Easy Upgrading", 'acf'); ?></h3>
<p><?php printf(__('To help make upgrading easy, <a href="%s">login to your store account</a> and claim a free copy of ACF PRO!', 'acf'), esc_url('http://www.advancedcustomfields.com/my-account/')); ?></p> <p><?php printf(__('To help make upgrading easy, <a href="%s">login to your store account</a> and claim a free copy of ACF PRO!', 'acf'), esc_url('https://www.advancedcustomfields.com/my-account/')); ?></p>
<p><?php printf(__('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>', 'acf'), esc_url('http://www.advancedcustomfields.com/resources/updates/upgrading-v4-v5/'), esc_url('http://support.advancedcustomfields.com')); ?> <p><?php printf(__('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>', 'acf'), esc_url('https://www.advancedcustomfields.com/resources/updates/upgrading-v4-v5/'), esc_url('https://support.advancedcustomfields.com')); ?>
</div> </div>

View File

@ -928,10 +928,6 @@ function acf_get_admin_notices()
function acf_get_image_sizes() { function acf_get_image_sizes() {
// global
global $_wp_additional_image_sizes;
// vars // vars
$sizes = array( $sizes = array(
'thumbnail' => __("Thumbnail",'acf'), 'thumbnail' => __("Thumbnail",'acf'),
@ -971,12 +967,13 @@ function acf_get_image_sizes() {
foreach( array_keys($sizes) as $s ) { foreach( array_keys($sizes) as $s ) {
// vars // vars
$w = isset($_wp_additional_image_sizes[$s]['width']) ? $_wp_additional_image_sizes[$s]['width'] : get_option( "{$s}_size_w" ); $data = acf_get_image_size($s);
$h = isset($_wp_additional_image_sizes[$s]['height']) ? $_wp_additional_image_sizes[$s]['height'] : get_option( "{$s}_size_h" );
if( $w && $h ) {
// append
if( $data['width'] && $data['height'] ) {
$sizes[ $s ] .= " ({$w} x {$h})"; $sizes[ $s ] .= ' (' . $data['width'] . ' x ' . $data['height'] . ')';
} }
@ -996,6 +993,28 @@ function acf_get_image_sizes() {
} }
function acf_get_image_size( $s = '' ) {
// global
global $_wp_additional_image_sizes;
// rename for nicer code
$_sizes = $_wp_additional_image_sizes;
// vars
$data = array(
'width' => isset($_sizes[$s]['width']) ? $_sizes[$s]['width'] : get_option("{$s}_size_w"),
'height' => isset($_sizes[$s]['height']) ? $_sizes[$s]['height'] : get_option("{$s}_size_h")
);
// return
return $data;
}
/* /*
* acf_get_taxonomies * acf_get_taxonomies
@ -2894,6 +2913,7 @@ function acf_upload_file( $uploaded_file ) {
// required // required
require_once( ABSPATH . "/wp-load.php" ); require_once( ABSPATH . "/wp-load.php" );
require_once( ABSPATH . "/wp-admin/includes/media.php" ); // video functions
require_once( ABSPATH . "/wp-admin/includes/file.php" ); require_once( ABSPATH . "/wp-admin/includes/file.php" );
require_once( ABSPATH . "/wp-admin/includes/image.php" ); require_once( ABSPATH . "/wp-admin/includes/image.php" );
@ -3008,6 +3028,10 @@ function acf_is_screen( $id = '' ) {
$current_screen = get_current_screen(); $current_screen = get_current_screen();
// bail early if no screen
if( !$current_screen ) return false;
// return // return
return ($id === $current_screen->id); return ($id === $current_screen->id);
@ -3073,12 +3097,12 @@ function acf_maybe_get( $array, $key, $default = null ) {
function acf_get_attachment( $post ) { function acf_get_attachment( $post ) {
// get post // post
if ( !$post = get_post( $post ) ) { $post = get_post($post);
return false;
// bail early if no post
} if( !$post ) return false;
// vars // vars
@ -3867,6 +3891,85 @@ function acf_is_row_collapsed( $field_key = '', $row_index = 0 ) {
} }
/*
* acf_get_post_thumbnail
*
* This function will return a thumbail image url for a given post
*
* @type function
* @date 3/05/2016
* @since 5.3.8
*
* @param $post (obj)
* @param $size (mixed)
* @return (string)
*/
function acf_get_post_thumbnail( $post = null, $size = 'thumbnail' ) {
// vars
$data = array(
'url' => '',
'type' => '',
'html' => ''
);
// post
$post = get_post($post);
// bail early if no post
if( !$post ) return $data;
// vars
$thumb_id = $post->ID;
$mime_type = acf_maybe_get(explode('/', $post->post_mime_type), 0);
// attachment
if( $post->post_type === 'attachment' ) {
// change $thumb_id
if( $mime_type === 'audio' || $mime_type === 'video' ) {
$thumb_id = get_post_thumbnail_id($post->ID);
}
// post
} else {
$thumb_id = get_post_thumbnail_id($post->ID);
}
// try url
$data['url'] = wp_get_attachment_image_src($thumb_id, $size);
$data['url'] = acf_maybe_get($data['url'], 0);
// default icon
if( !$data['url'] && $post->post_type === 'attachment' ) {
$data['url'] = wp_mime_type_icon($post->ID);
$data['type'] = 'icon';
}
// html
$data['html'] = '<img src="' . $data['url'] . '" alt="" />';
// return
return $data;
}
/* /*
* Hacks * Hacks
* *

View File

@ -17,7 +17,16 @@
function acf_get_field_reference( $field_name, $post_id ) { function acf_get_field_reference( $field_name, $post_id ) {
return acf_get_metadata( $post_id, $field_name, true ); // vars
$field_key = acf_get_metadata( $post_id, $field_name, true );
// filter
$field_key = apply_filters('acf/get_field_reference', $field_key, $field_name, $post_id);
// return
return $field_key;
} }
@ -482,7 +491,7 @@ function have_rows( $selector, $post_id = false ) {
// add loop // add loop
acf_add_loop(array( acf_add_loop(array(
'selector' => $selector, 'selector' => $selector,
'name' => $active_loop['name'] . '_' . $active_loop['i'], // used by update_sub_field 'name' => $active_loop['name'] . '_' . $active_loop['i'] . '_' . $sub_field['name'], // used by update_sub_field
'value' => $value, 'value' => $value,
'field' => $sub_field, 'field' => $sub_field,
'i' => -1, 'i' => -1,
@ -594,6 +603,84 @@ function get_row_index() {
} }
/*
* get_row_sub_field
*
* This function is used inside a 'has_sub_field' while loop to return a sub field object
*
* @type function
* @date 16/05/2016
* @since 5.3.8
*
* @param $selector (string)
* @return (array)
*/
function get_row_sub_field( $selector ) {
// vars
$row = acf_get_loop('active');
// bail early if no row
if( !$row ) return false;
// attempt to find sub field
$sub_field = acf_get_sub_field($selector, $row['field']);
// bail early if no field
if( !$sub_field ) return false;
// update field's name based on row data
$sub_field['name'] = "{$row['name']}_{$row['i']}_{$sub_field['name']}";
// return
return $sub_field;
}
/*
* get_row_sub_value
*
* This function is used inside a 'has_sub_field' while loop to return a sub field value
*
* @type function
* @date 16/05/2016
* @since 5.3.8
*
* @param $selector (string)
* @return (mixed)
*/
function get_row_sub_value( $selector ) {
// vars
$row = acf_get_loop('active');
// bail early if no row
if( !$row ) return null;
// return value
if( isset($row['value'][ $row['i'] ][ $selector ]) ) {
return $row['value'][ $row['i'] ][ $selector ];
}
// return
return null;
}
/* /*
* reset_rows * reset_rows
* *
@ -682,15 +769,11 @@ function get_sub_field( $selector, $format_value = true ) {
// bail early if no row // bail early if no row
if( !$row ) { if( !$row ) return null;
return false;
}
// attempt to find sub field // attempt to find sub field
$sub_field = acf_get_sub_field($selector, $row['field']); $sub_field = get_row_sub_field( $selector );
// update selector // update selector
@ -705,29 +788,22 @@ function get_sub_field( $selector, $format_value = true ) {
} }
// return value // load value
if( isset($row['value'][ $row['i'] ][ $selector ]) ) { $value = get_row_sub_value( $selector );
// format value
if( $format_value ) {
// get // get value for field
$value = $row['value'][ $row['i'] ][ $selector ]; $value = acf_format_value( $value, $row['post_id'], $sub_field );
// format
if( $format_value ) {
$value = acf_format_value( $value, $row['post_id'], $sub_field );
}
// return
return $value;
} }
// return false // return
return false; return $value;
} }
@ -778,37 +854,30 @@ function get_sub_field_object( $selector, $format_value = true, $load_value = tr
// bail early if no row // bail early if no row
if( !$row ) { if( !$row ) return false;
return false;
}
// vars
$parent = $row['field'];
// get sub field // attempt to find sub field
$sub_field = acf_get_sub_field( $selector, $parent ); $sub_field = get_row_sub_field($selector);
// bail early if no sub field // bail early if no sub field
if( !$sub_field ) { if( !$sub_field ) return false;
return false;
}
// load value // load value
if( $load_value ) { $sub_field['value'] = get_row_sub_value( $sub_field['key'] );
$sub_field['value'] = get_sub_field( $sub_field['name'], $format_value );
// format value
if( $format_value ) {
// get value for field
$sub_field['value'] = acf_format_value( $sub_field['value'], $row['post_id'], $sub_field );
} }
// return // return
return $sub_field; return $sub_field;
@ -1431,26 +1500,21 @@ function update_sub_field( $selector, $value, $post_id = false ) {
$post_id = $row['post_id']; $post_id = $row['post_id'];
// get sub field // attempt to find sub field
$field = get_sub_field_object( $selector, false, false ); $field = get_row_sub_field($selector);
// create dummy field // create dummy field
if( !$field ) { if( !$field ) {
$field = acf_get_valid_field(array( $field = acf_get_valid_field(array(
'name' => $selector, 'name' => "{$row['name']}_{$row['i']}_{$selector}",
'key' => '', 'key' => '',
'type' => '', 'type' => '',
)); ));
} }
// update name
$field['name'] = "{$row['name']}_{$row['i']}_{$field['name']}";
} elseif( is_array($selector) ) { } elseif( is_array($selector) ) {
// validate // validate

View File

@ -263,8 +263,8 @@ function acf_update_option( $option = '', $value = '', $autoload = null ) {
// for some reason, update_option does not use stripslashes_deep. // for some reason, update_option does not use stripslashes_deep.
// update_metadata -> http://core.trac.wordpress.org/browser/tags/3.4.2/wp-includes/meta.php#L82: line 101 (does use stripslashes_deep) // update_metadata -> https://core.trac.wordpress.org/browser/tags/3.4.2/wp-includes/meta.php#L82: line 101 (does use stripslashes_deep)
// update_option -> http://core.trac.wordpress.org/browser/tags/3.5.1/wp-includes/option.php#L0: line 215 (does not use stripslashes_deep) // update_option -> https://core.trac.wordpress.org/browser/tags/3.5.1/wp-includes/option.php#L0: line 215 (does not use stripslashes_deep)
$value = stripslashes_deep($value); $value = stripslashes_deep($value);
@ -302,15 +302,14 @@ function acf_update_option( $option = '', $value = '', $autoload = null ) {
function acf_get_value( $post_id = 0, $field ) { function acf_get_value( $post_id = 0, $field ) {
// try cache // cache
$found = false; $found = false;
$cache = wp_cache_get( "load_value/post_id={$post_id}/name={$field['name']}", 'acf', false, $found ); $cache_slug = "load_value/post_id={$post_id}/name={$field['name']}";
$cache = wp_cache_get($cache_slug, 'acf', false, $found);
if( $found ) {
return $cache; // return cache if found
if( $found ) return $cache;
}
// load value // load value
@ -332,12 +331,12 @@ function acf_get_value( $post_id = 0, $field ) {
// filter for 3rd party customization // filter for 3rd party customization
$value = apply_filters( "acf/load_value", $value, $post_id, $field ); $value = apply_filters( "acf/load_value", $value, $post_id, $field );
$value = apply_filters( "acf/load_value/type={$field['type']}", $value, $post_id, $field ); $value = apply_filters( "acf/load_value/type={$field['type']}", $value, $post_id, $field );
$value = apply_filters( "acf/load_value/name={$field['name']}", $value, $post_id, $field ); $value = apply_filters( "acf/load_value/name={$field['_name']}", $value, $post_id, $field );
$value = apply_filters( "acf/load_value/key={$field['key']}", $value, $post_id, $field ); $value = apply_filters( "acf/load_value/key={$field['key']}", $value, $post_id, $field );
// update cache // update cache
wp_cache_set( "load_value/post_id={$post_id}/name={$field['name']}", $value, 'acf' ); wp_cache_set($cache_slug, $value, 'acf');
// return // return
@ -363,13 +362,27 @@ function acf_get_value( $post_id = 0, $field ) {
function acf_format_value( $value, $post_id, $field ) { function acf_format_value( $value, $post_id, $field ) {
// try cache
$found = false;
$cache_slug = "format_value/post_id={$post_id}/name={$field['name']}";
$cache = wp_cache_get($cache_slug, 'acf', false, $found);
// return cache if found
if( $found ) return $cache;
// apply filters // apply filters
$value = apply_filters( "acf/format_value", $value, $post_id, $field ); $value = apply_filters( "acf/format_value", $value, $post_id, $field );
$value = apply_filters( "acf/format_value/type={$field['type']}", $value, $post_id, $field ); $value = apply_filters( "acf/format_value/type={$field['type']}", $value, $post_id, $field );
$value = apply_filters( "acf/format_value/name={$field['name']}", $value, $post_id, $field ); $value = apply_filters( "acf/format_value/name={$field['_name']}", $value, $post_id, $field );
$value = apply_filters( "acf/format_value/key={$field['key']}", $value, $post_id, $field ); $value = apply_filters( "acf/format_value/key={$field['key']}", $value, $post_id, $field );
// update cache
wp_cache_set($cache_slug, $value, 'acf');
// return // return
return $value; return $value;

View File

@ -164,7 +164,7 @@ img.acf-fw {
color: #fff; color: #fff;
padding: 5px 15px; padding: 5px 15px;
position: absolute; position: absolute;
z-index: 9999; z-index: 999999;
font-size: 12px; font-size: 12px;
} }
.acf-tooltip.top { .acf-tooltip.top {
@ -757,15 +757,31 @@ a.acf-icon.-cancel.grey:hover {
/* columns (replicate post edit layout) */ /* columns (replicate post edit layout) */
.acf-columns-2 { .acf-columns-2 {
margin-right: 300px; margin-right: 300px;
clear: both;
/* rtl */
}
html[dir="rtl"] .acf-columns-2 {
margin-right: 0;
margin-left: 300px;
} }
.acf-columns-2 .acf-column-1 { .acf-columns-2 .acf-column-1 {
float: left; float: left;
width: 100%; width: 100%;
/* rtl */
}
html[dir="rtl"] .acf-columns-2 .acf-column-1 {
float: right;
} }
.acf-columns-2 .acf-column-2 { .acf-columns-2 .acf-column-2 {
float: right; float: right;
margin-right: -300px; margin-right: -300px;
width: 280px; width: 280px;
/* rtl */
}
html[dir="rtl"] .acf-columns-2 .acf-column-2 {
float: left;
margin-right: 0;
margin-left: -300px;
} }
.acf-clear { .acf-clear {
clear: both; clear: both;
@ -1111,7 +1127,7 @@ html[dir="rtl"] .acf-table > tbody > tr > td.order + td {
[class^="acf-sprite-"], [class^="acf-sprite-"],
[class*=" acf-sprite-"] { [class*=" acf-sprite-"] {
background-image: url(../images/sprite@2x.png); background-image: url(../images/sprite@2x.png);
background-size: 500px 500px; background-size: 250px 250px;
} }
.acf-loading, .acf-loading,
.acf-spinner { .acf-spinner {

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because one or more lines are too long

View File

@ -999,38 +999,24 @@ class acf_location {
// validate // validate
if( ! $attachment ) { if( !$attachment ) return false;
return false;
}
// compare // match
if( $rule['operator'] == "==" ) { $match = ( $attachment === $rule['value'] );
$match = ( $attachment == $rule['value'] );
// override for "all"
// override for "all" if( $rule['value'] == "all" ) $match = true;
if( $rule['value'] == "all" ) {
$match = true; // reverse if 'not equal to'
if( $rule['operator'] === '!=' ) {
}
$match = !$match;
} elseif( $rule['operator'] == "!=" ) {
$match = ( $attachment != $rule['value'] );
// override for "all"
if( $rule['value'] == "all" ) {
$match = false;
}
}
}
// return // return
return $match; return $match;
@ -1106,36 +1092,22 @@ class acf_location {
// validate // validate
if( ! $widget ) { if( !$widget ) return false;
return false;
}
// compare // match
if( $rule['operator'] == "==" ) { $match = ( $widget === $rule['value'] );
$match = ( $widget == $rule['value'] );
// override for "all"
// override for "all" if( $rule['value'] == "all" ) $match = true;
if( $rule['value'] == "all" ) {
$match = true; // reverse if 'not equal to'
if( $rule['operator'] === '!=' ) {
}
$match = !$match;
} elseif( $rule['operator'] == "!=" ) {
$match = ( $widget != $rule['value'] );
// override for "all"
if( $rule['value'] == "all" ) {
$match = false;
}
} }

View File

@ -25,6 +25,7 @@ class acf_media {
// filters // filters
add_filter('wp_handle_upload_prefilter', array($this, 'handle_upload_prefilter'), 10, 1); add_filter('wp_handle_upload_prefilter', array($this, 'handle_upload_prefilter'), 10, 1);
add_filter('acf/input/admin_l10n', array($this, 'acf_input_admin_l10n'), 10, 1);
// ajax // ajax
@ -33,6 +34,37 @@ class acf_media {
} }
/*
* acf_input_admin_l10n
*
* This function will append l10n strings for JS use
*
* @type function
* @date 11/04/2016
* @since 5.3.8
*
* @param $post_id (int)
* @return $post_id (int)
*/
function acf_input_admin_l10n( $l10n ) {
// append
$l10n['media'] = array(
'select' => __("Select",'acf'),
'edit' => __("Edit",'acf'),
'update' => __("Update",'acf'),
'uploadedTo' => __("Uploaded to this post",'acf'),
'default_icon' => wp_mime_type_icon()
);
// return
return $l10n;
}
/* /*
* handle_upload_prefilter * handle_upload_prefilter
* *

View File

@ -70,10 +70,7 @@ class acf_field_checkbox extends acf_field {
// hiden input // hiden input
acf_hidden_input(array( acf_hidden_input( array('name' => $field['name']) );
'type' => 'hidden',
'name' => $field['name'],
));
// vars // vars

View File

@ -91,9 +91,9 @@ class acf_field_file extends acf_field {
$o = array( $o = array(
'icon' => '', 'icon' => '',
'title' => '', 'title' => '',
'size' => '',
'url' => '', 'url' => '',
'name' => '', 'filesize' => '',
'filename' => '',
); );
$div = array( $div = array(
@ -104,25 +104,31 @@ class acf_field_file extends acf_field {
); );
// has value // has value?
if( $field['value'] && is_numeric($field['value']) ) { if( $field['value'] ) {
$file = get_post( $field['value'] ); $file = get_post( $field['value'] );
if( $file ) { if( $file ) {
$div['class'] .= ' has-value';
$o['icon'] = wp_mime_type_icon( $file->ID ); $o['icon'] = wp_mime_type_icon( $file->ID );
$o['title'] = $file->post_title; $o['title'] = $file->post_title;
$o['size'] = @size_format(filesize( get_attached_file( $file->ID ) )); $o['filesize'] = @size_format(filesize( get_attached_file( $file->ID ) ));
$o['url'] = wp_get_attachment_url( $file->ID ); $o['url'] = wp_get_attachment_url( $file->ID );
$explode = explode('/', $o['url']); $explode = explode('/', $o['url']);
$o['name'] = end( $explode ); $o['filename'] = end( $explode );
} }
// url exists
if( $o['url'] ) {
$div['class'] .= ' has-value';
}
} }
?> ?>
@ -140,11 +146,11 @@ class acf_field_file extends acf_field {
</p> </p>
<p> <p>
<strong><?php _e('File name', 'acf'); ?>:</strong> <strong><?php _e('File name', 'acf'); ?>:</strong>
<a data-name="name" href="<?php echo $o['url']; ?>" target="_blank"><?php echo $o['name']; ?></a> <a data-name="filename" href="<?php echo $o['url']; ?>" target="_blank"><?php echo $o['filename']; ?></a>
</p> </p>
<p> <p>
<strong><?php _e('File size', 'acf'); ?>:</strong> <strong><?php _e('File size', 'acf'); ?>:</strong>
<span data-name="size"><?php echo $o['size']; ?></span> <span data-name="filesize"><?php echo $o['filesize']; ?></span>
</p> </p>
<ul class="acf-hl acf-soh-target"> <ul class="acf-hl acf-soh-target">
@ -290,19 +296,11 @@ class acf_field_file extends acf_field {
function format_value( $value, $post_id, $field ) { function format_value( $value, $post_id, $field ) {
// bail early if no value // bail early if no value
if( empty($value) ) { if( empty($value) ) return false;
return false;
}
// bail early if not numeric (error message) // bail early if not numeric (error message)
if( !is_numeric($value) ) { if( !is_numeric($value) ) return false;
return false;
}
// convert to int // convert to int
@ -344,7 +342,7 @@ class acf_field_file extends acf_field {
return($vars); return($vars);
} }
/* /*
* update_value() * update_value()
@ -364,26 +362,23 @@ class acf_field_file extends acf_field {
function update_value( $value, $post_id, $field ) { function update_value( $value, $post_id, $field ) {
// array? // numeric
if( is_array($value) && isset($value['ID']) ) { if( is_numeric($value) ) return $value;
return $value['ID'];
// array?
} if( is_array($value) && isset($value['ID']) ) return $value['ID'];
// object? // object?
if( is_object($value) && isset($value->ID) ) { if( is_object($value) && isset($value->ID) ) return $value->ID;
return $value->ID;
}
// return // return
return $value; return $value;
} }
/* /*
* wp_prepare_attachment_for_js * wp_prepare_attachment_for_js

View File

@ -106,36 +106,42 @@ class acf_field_image extends acf_field {
// has value? // has value?
if( $field['value'] && is_numeric($field['value']) ) { if( $field['value'] ) {
// update vars // update vars
$url = wp_get_attachment_image_src($field['value'], $field['preview_size']); $url = wp_get_attachment_image_src($field['value'], $field['preview_size']);
$alt = get_post_meta($field['value'], '_wp_attachment_image_alt', true); $alt = get_post_meta($field['value'], '_wp_attachment_image_alt', true);
// url exists
if( $url ) $url = $url[0];
// url exists // url exists
if( $url ) { if( $url ) {
$url = $url[0];
$div['class'] .= ' has-value'; $div['class'] .= ' has-value';
} }
} }
// get size of preview value
$size = acf_get_image_size($field['preview_size']);
?> ?>
<div <?php acf_esc_attr_e( $div ); ?>> <div <?php acf_esc_attr_e( $div ); ?>>
<div class="acf-hidden"> <div class="acf-hidden">
<?php acf_hidden_input(array( 'name' => $field['name'], 'value' => $field['value'], 'data-name' => 'id' )); ?> <?php acf_hidden_input(array( 'name' => $field['name'], 'value' => $field['value'] )); ?>
</div> </div>
<div class="view show-if-value acf-soh"> <div class="view show-if-value acf-soh" <?php if( $size['width'] ) echo 'style="max-width: '.$size['width'].'px"'; ?>>
<img data-name="image" src="<?php echo $url; ?>" alt="<?php echo $alt; ?>"/> <img data-name="image" src="<?php echo $url; ?>" alt="<?php echo $alt; ?>"/>
<ul class="acf-hl acf-soh-target"> <ul class="acf-hl acf-soh-target">
<?php if( $uploader != 'basic' ): ?> <?php if( $uploader != 'basic' ): ?>
<li><a class="acf-icon -pencil dark" data-name="edit" href="#"></a></li> <li><a class="acf-icon -pencil dark" data-name="edit" href="#" title="<?php _e('Edit', 'acf'); ?>"></a></li>
<?php endif; ?> <?php endif; ?>
<li><a class="acf-icon -cancel dark" data-name="remove" href="#"></a></li> <li><a class="acf-icon -cancel dark" data-name="remove" href="#" title="<?php _e('Remove', 'acf'); ?>"></a></li>
</ul> </ul>
</div> </div>
<div class="view hide-if-value"> <div class="view hide-if-value">
@ -330,19 +336,11 @@ class acf_field_image extends acf_field {
function format_value( $value, $post_id, $field ) { function format_value( $value, $post_id, $field ) {
// bail early if no value // bail early if no value
if( empty($value) ) { if( empty($value) ) return false;
return false;
}
// bail early if not numeric (error message) // bail early if not numeric (error message)
if( !is_numeric($value) ) { if( !is_numeric($value) ) return false;
return false;
}
// convert to int // convert to int
@ -386,39 +384,7 @@ class acf_field_image extends acf_field {
return($vars); return($vars);
} }
/*
* image_size_names_choose
*
* @description:
* @since: 3.5.7
* @created: 13/01/13
*/
/*
function image_size_names_choose( $sizes )
{
global $_wp_additional_image_sizes;
if( $_wp_additional_image_sizes )
{
foreach( $_wp_additional_image_sizes as $k => $v )
{
$title = $k;
$title = str_replace('-', ' ', $title);
$title = str_replace('_', ' ', $title);
$title = ucwords( $title );
$sizes[ $k ] = $title;
}
// foreach( $image_sizes as $image_size )
}
return $sizes;
}
*/
/* /*
* wp_prepare_attachment_for_js * wp_prepare_attachment_for_js
@ -497,27 +463,23 @@ function image_size_names_choose( $sizes )
function update_value( $value, $post_id, $field ) { function update_value( $value, $post_id, $field ) {
// array? // numeric
if( is_array($value) && isset($value['ID']) ) { if( is_numeric($value) ) return $value;
return $value['ID'];
// array?
} if( is_array($value) && isset($value['ID']) ) return $value['ID'];
// object? // object?
if( is_object($value) && isset($value->ID) ) { if( is_object($value) && isset($value->ID) ) return $value->ID;
return $value->ID;
}
// return // return
return $value; return $value;
} }
} }
new acf_field_image(); new acf_field_image();

View File

@ -41,6 +41,7 @@ class acf_field_radio extends acf_field {
'default_value' => '', 'default_value' => '',
'other_choice' => 0, 'other_choice' => 0,
'save_other_choice' => 0, 'save_other_choice' => 0,
'allow_null' => 0
); );
@ -66,21 +67,54 @@ class acf_field_radio extends acf_field {
*/ */
function render_field( $field ) { function render_field( $field ) {
// vars // vars
$i = 0; $i = 0;
$checked = false; $e = '';
$ul = array(
'class' => 'acf-radio-list',
'data-allow_null' => $field['allow_null'],
'data-other_choice' => $field['other_choice']
);
// class // append to class
$field['class'] .= ' acf-radio-list'; $ul['class'] .= ' ' . ($field['layout'] == 'horizontal' ? 'acf-hl' : 'acf-bl');
$field['class'] .= ($field['layout'] == 'horizontal') ? ' acf-hl' : ' acf-bl'; $ul['class'] .= ' ' . $field['class'];
// e
$e = '<ul ' . acf_esc_attr(array( 'class' => $field['class'] )) . '>';
// select value
$checked = '';
$value = strval($field['value']);
// selected choice
if( isset($field['choices'][ $value ]) ) {
$checked = $value;
// custom choice
} elseif( $field['other_choice'] && $value !== '' ) {
$checked = 'other';
// allow null
} elseif( $field['allow_null'] ) {
// do nothing
// select first input by default
} else {
$checked = key($field['choices']);
}
// ensure $checked is a string (could be an int)
$checked = strval($checked);
// other choice // other choice
if( $field['other_choice'] ) { if( $field['other_choice'] ) {
@ -94,76 +128,89 @@ class acf_field_radio extends acf_field {
// select other choice if value is not a valid choice // select other choice if value is not a valid choice
if( !isset($field['choices'][ $field['value'] ]) ) { if( $checked === 'other' ) {
unset($input['disabled']); unset($input['disabled']);
$input['value'] = $field['value']; $input['value'] = $field['value'];
$field['value'] = 'other';
} }
// append other choice
$field['choices']['other'] = '</label><input type="text" ' . acf_esc_attr($input) . ' /><label>'; $field['choices']['other'] = '</label><input type="text" ' . acf_esc_attr($input) . ' /><label>';
} }
// require choices // bail early if no choices
if( !empty($field['choices']) ) { if( empty($field['choices']) ) return;
// select first choice if value is not a valid choice
if( !isset($field['choices'][ $field['value'] ]) ) {
$field['value'] = key($field['choices']);
}
// foreach choices
foreach( $field['choices'] as $value => $label ) {
// increase counter
$i++;
// vars
$atts = array(
'type' => 'radio',
'id' => $field['id'],
'name' => $field['name'],
'value' => $value,
);
if( strval($value) === strval($field['value']) ) {
$atts['checked'] = 'checked';
$checked = true;
}
if( isset($field['disabled']) && acf_in_array($value, $field['disabled']) ) {
$atts['disabled'] = 'disabled';
}
// each input ID is generated with the $key, however, the first input must not use $key so that it matches the field's label for attribute
if( $i > 1 ) {
$atts['id'] .= '-' . $value;
}
$e .= '<li><label><input ' . acf_esc_attr( $atts ) . '/>' . $label . '</label></li>';
}
// hiden input
$e .= acf_get_hidden_input( array('name' => $field['name']) );
// open
$e .= '<ul ' . acf_esc_attr($ul) . '>';
// foreach choices
foreach( $field['choices'] as $value => $label ) {
// ensure value is a string
$value = strval($value);
$class = '';
// increase counter
$i++;
// vars
$atts = array(
'type' => 'radio',
'id' => $field['id'],
'name' => $field['name'],
'value' => $value
);
// checked
if( $value === $checked ) {
$atts['checked'] = 'checked';
$class = ' class="selected"';
}
// deisabled
if( isset($field['disabled']) && acf_in_array($value, $field['disabled']) ) {
$atts['disabled'] = 'disabled';
}
// id (use crounter for each input)
if( $i > 1 ) {
$atts['id'] .= '-' . $value;
}
// append
$e .= '<li><label' . $class . '><input ' . acf_esc_attr( $atts ) . '/>' . $label . '</label></li>';
} }
// close
$e .= '</ul>'; $e .= '</ul>';
// return
echo $e; echo $e;
} }
@ -197,6 +244,20 @@ class acf_field_radio extends acf_field {
)); ));
// allow_null
acf_render_field_setting( $field, array(
'label' => __('Allow Null?','acf'),
'instructions' => '',
'type' => 'radio',
'name' => 'allow_null',
'choices' => array(
1 => __("Yes",'acf'),
0 => __("No",'acf'),
),
'layout' => 'horizontal',
));
// other_choice // other_choice
acf_render_field_setting( $field, array( acf_render_field_setting( $field, array(
'label' => __('Other','acf'), 'label' => __('Other','acf'),
@ -288,26 +349,24 @@ class acf_field_radio extends acf_field {
function update_value( $value, $post_id, $field ) { function update_value( $value, $post_id, $field ) {
// bail early if no value (allow 0 to be saved)
if( !$value && !is_numeric($value) ) return $value;
// save_other_choice // save_other_choice
if( $field['save_other_choice'] ) { if( $field['save_other_choice'] ) {
// value isn't in choices yet // value isn't in choices yet
if( !isset($field['choices'][ $value ]) ) { if( !isset($field['choices'][ $value ]) ) {
// get ID if local // get raw $field (may have been changed via repeater field)
if( !$field['ID'] ) { // if field is local, it won't have an ID
$selector = $field['ID'] ? $field['ID'] : $field['key'];
$field = acf_get_field( $field['key'], true ); $field = acf_get_field( $selector, true );
}
// bail early if no ID // bail early if no ID (JSON only)
if( !$field['ID'] ) { if( !$field['ID'] ) return $value;
return $value;
}
// update $field // update $field

View File

@ -322,22 +322,25 @@ class acf_field_relationship extends acf_field {
// elements // elements
if( !empty($field['elements']) ) { if( !empty($field['elements']) ) {
// featured_image
if( in_array('featured_image', $field['elements']) ) { if( in_array('featured_image', $field['elements']) ) {
$image = ''; // vars
$class = 'thumbnail';
$thumbnail = acf_get_post_thumbnail($post->ID, array(17, 17));
if( $post->post_type == 'attachment' ) {
// icon
if( $thumbnail['type'] == 'icon' ) {
$image = wp_get_attachment_image( $post->ID, array(17, 17) ); $class .= ' -' . $thumbnail['type'];
} else {
$image = get_the_post_thumbnail( $post->ID, array(17, 17) );
} }
$title = '<div class="thumbnail">' . $image . '</div>' . $title; // append
$title = '<div class="' . $class . '">' . $thumbnail['html'] . '</div>' . $title;
} }
} }

View File

@ -138,6 +138,16 @@ class acf_form_attachment {
'ajax' => 1 'ajax' => 1
)); ));
?>
<script type="text/javascript">
// WP saves attachment on any input change, so unload is not needed
acf.unload.active = 0;
</script>
<?php
} }
@ -160,7 +170,7 @@ class acf_form_attachment {
$el = 'tr'; $el = 'tr';
$post_id = $post->ID; $post_id = $post->ID;
$args = array( $args = array(
'attachment' => 'All' 'attachment' => $post_id
); );

View File

@ -35,8 +35,10 @@ class acf_form_comment {
// render // render
add_action( 'comment_form_logged_in_after', array( $this, 'add_comment') ); add_filter('comment_form_field_comment', array($this, 'comment_form_field_comment'), 999, 1);
add_action( 'comment_form_after_fields', array( $this, 'add_comment') );
//add_action( 'comment_form_logged_in_after', array( $this, 'add_comment') );
//add_action( 'comment_form', array( $this, 'add_comment') );
// save // save
@ -156,11 +158,23 @@ class acf_form_comment {
// vars // vars
$o = array( $o = array(
'id' => 'acf-' . $field_group['ID'], 'id' => 'acf-'.$field_group['ID'],
'key' => $field_group['key'], 'key' => $field_group['key'],
'label' => $field_group['label_placement'] //'style' => $field_group['style'],
'label' => $field_group['label_placement'],
'edit_url' => '',
'edit_title' => __('Edit field group', 'acf'),
//'visibility' => $visibility
); );
// edit_url
if( $field_group['ID'] && acf_current_user_can_admin() ) {
$o['edit_url'] = admin_url('post.php?post=' . $field_group['ID'] . '&action=edit');
}
?> ?>
<div id="acf-<?php echo $field_group['ID']; ?>" class="stuffbox"> <div id="acf-<?php echo $field_group['ID']; ?>" class="stuffbox">
<h3 class="hndle"><?php echo $field_group['title']; ?></h3> <h3 class="hndle"><?php echo $field_group['title']; ?></h3>
@ -185,26 +199,26 @@ class acf_form_comment {
/* /*
* add_comment * comment_form_field_comment
* *
* This function will add fields to the front end comment form * description
* *
* @type function * @type function
* @date 19/10/13 * @date 18/04/2016
* @since 5.0.0 * @since 5.3.8
* *
* @param n/a * @param $post_id (int)
* @return n/a * @return $post_id (int)
*/ */
function add_comment() { function comment_form_field_comment( $html ) {
// global // global
global $post; global $post;
// vars // vars
$post_id = "comment_0"; $post_id = false;
// get field groups // get field groups
@ -213,7 +227,12 @@ class acf_form_comment {
)); ));
if( !empty($field_groups) ) { // bail early if no field groups
if( !$field_groups ) return $html;
// ob
ob_start();
// render post data // render post data
acf_form_data(array( acf_form_data(array(
@ -226,15 +245,18 @@ class acf_form_comment {
$fields = acf_get_fields( $field_group ); $fields = acf_get_fields( $field_group );
?> acf_render_fields( $post_id, $fields, 'p', $field_group['instruction_placement'] );
<div class="acf-fields -<?php echo $field_group['label_placement']; ?>">
<?php acf_render_fields( $post_id, $fields, 'div', $field_group['instruction_placement'] ); ?>
</div>
<?php
} }
}
// append
$html .= ob_get_contents();
ob_end_clean();
// return
return $html;
} }

View File

@ -215,7 +215,7 @@ class acf_form_taxonomy {
?> ?>
<?php if( $field_group['style'] == 'default' ): ?> <?php if( $field_group['style'] == 'default' ): ?>
<h3><?php echo $field_group['title']; ?></h3> <h2><?php echo $field_group['title']; ?></h2>
<?php endif; ?> <?php endif; ?>
<table class="form-table"> <table class="form-table">
<tbody> <tbody>

View File

@ -252,7 +252,7 @@ class acf_form_user {
// title // title
if( $show_title && $field_group['style'] === 'default' ) { if( $show_title && $field_group['style'] === 'default' ) {
echo '<h3>' . $field_group['title'] . '</h3>'; echo '<h2>' . $field_group['title'] . '</h2>';
} }

View File

@ -32,6 +32,7 @@ class acf_form_widget {
// vars // vars
$this->preview_values = array(); $this->preview_values = array();
$this->preview_reference = array();
$this->preview_errors = array(); $this->preview_errors = array();
@ -173,11 +174,15 @@ class acf_form_widget {
function widget_update_callback( $instance, $new_instance, $old_instance, $widget ) { function widget_update_callback( $instance, $new_instance, $old_instance, $widget ) {
// bail early if empty
if( empty($_POST['acf']) ) return $instance;
// bail early if no nonce // bail early if no nonce
if( !acf_verify_nonce('widget') ) return $instance; if( !acf_verify_nonce('widget') ) return $instance;
// customizer // customizer autosave preview
if( !empty($_POST['wp_customize']) ) { if( !empty($_POST['wp_customize']) ) {
return $this->customizer_widget_update_callback($instance, $new_instance, $old_instance, $widget); return $this->customizer_widget_update_callback($instance, $new_instance, $old_instance, $widget);
@ -217,15 +222,6 @@ class acf_form_widget {
function customizer_widget_update_callback( $instance, $new_instance, $old_instance, $widget ) { function customizer_widget_update_callback( $instance, $new_instance, $old_instance, $widget ) {
// add preview_values reference for later use in load_value filter
// WP will re-generate the widget form HTML, and we need to load the $_POST data, not the DB data
$this->preview_values[ "widget_{$widget->id}" ] = $_POST['acf'];
// add filter
add_filter('acf/load_value', array($this, 'load_value'), 10, 3);
// bail early if not valid // bail early if not valid
if( !acf_validate_save_post() ) { if( !acf_validate_save_post() ) {
@ -256,9 +252,34 @@ class acf_form_widget {
} else { } else {
$instance['acf'] = array(
'ID' => 'widget_' . $widget->id,
'values' => false,
'reference' => array()
);
// append acf $_POST data to instance // append acf $_POST data to instance
// this allows preview JS data to contain acf values // this allows preview JS data to contain acf values
$instance['acf'] = $_POST['acf']; $instance['acf']['values'] = $_POST['acf'];
// backup name => key reference
// this will allow the customizer preview to correctly load the field when attempting to run acf_load_value and acf_format_value functions on newly added widgets
foreach( $_POST['acf'] as $k => $v ) {
// get field
$field = acf_get_field( $k );
// continue if no field
if( !$field ) continue;
// update
$instance['acf']['reference'][ $field['name'] ] = $field['key'];
}
} }
@ -305,15 +326,11 @@ class acf_form_widget {
// get value // get value
$value = $setting->post_value(); $value = $setting->post_value();
// get id from widget_text[2] to widget_text-2 // set data
$setting->acf_id = str_replace(array('[', ']'), array('-', ''), $setting->id); $setting->acf = acf_maybe_get($value, 'acf');
// get acf value
$setting->acf_value = acf_maybe_get($value, 'acf');
// append // append
@ -358,12 +375,13 @@ class acf_form_widget {
// append values // append values
foreach( $widgets as $widget ) { foreach( $widgets as $widget ) {
// bail early if no acf_value // bail early if no acf
if( !$widget->acf_value ) continue; if( empty($widget->acf) ) continue;
// append acf_value to preview_values // append acf_value to preview_values
$this->preview_values[ $widget->acf_id ] = $widget->acf_value; $this->preview_values[ $widget->acf['ID'] ] = $widget->acf['values'];
$this->preview_reference[ $widget->acf['ID'] ] = $widget->acf['reference'];
} }
@ -373,7 +391,40 @@ class acf_form_widget {
// add filter // add filter
add_filter('acf/load_value', array($this, 'load_value'), 10, 3); add_filter('acf/load_value', array($this, 'load_value'), 10, 3);
add_filter('acf/get_field_reference', array($this, 'get_field_reference'), 10, 3);
}
/*
* get_field_reference
*
* This function will return a field_key for a given field name + post_id
* Normally, ACF would lookup the DB fro this connection, but a new preview widget has not yet saved anything to the DB
*
* @type function
* @date 12/05/2016
* @since 5.3.8
*
* @param $field_key (string)
* @param $field_name (string)
* @param $post_id (mixed)
* @return $field_key
*/
function get_field_reference( $field_key, $field_name, $post_id ) {
// look for reference
if( isset($this->preview_reference[ $post_id ][ $field_name ]) ) {
$field_key = $this->preview_reference[ $post_id ][ $field_name ];
}
// return
return $field_key;
} }
@ -393,10 +444,21 @@ class acf_form_widget {
function load_value( $value, $post_id, $field ) { function load_value( $value, $post_id, $field ) {
// acf/load_value filter is run first (before type, name, key)
// use this filter to append to the key filter and ensure this is run last
// could use set_cache in the future to remove this load_filter completley
// but don't want to clog up cache with multiple widget's values
// look for value // look for value
if( isset($this->preview_values[ $post_id ][ $field['key'] ]) ) { if( isset($this->preview_values[ $post_id ][ $field['key'] ]) ) {
$value = $this->preview_values[ $post_id ][ $field['key'] ]; // add filter to override the $value
add_filter('acf/load_value/key='.$field['key'], array($this, 'load_value_2'), 99, 3);
// return null and prevent any DB logic from field type functions
return null;
} }
@ -407,6 +469,23 @@ class acf_form_widget {
} }
function load_value_2( $value, $post_id, $field ) {
// look for value
$value = $this->preview_values[ $post_id ][ $field['key'] ];
// remove this filter (only run once)
remove_filter('acf/load_value/key='.$field['key'], array($this, 'load_value_2'), 99, 3);
// return
return $value;
}
/* /*
* customize_save * customize_save
* *
@ -436,14 +515,14 @@ class acf_form_widget {
foreach( $widgets as $widget ) { foreach( $widgets as $widget ) {
// bail early if no acf_value // bail early if no acf_value
if( !$widget->acf_value ) continue; if( !$widget->acf ) continue;
// fake post data // fake post data
$_POST['acf'] = $widget->acf_value; $_POST['acf'] = $widget->acf['values'];
// save // save
acf_save_post( $widget->acf_id ); acf_save_post( $widget->acf['ID'] );
// get widget base // get widget base

Binary file not shown.

File diff suppressed because it is too large Load Diff

Binary file not shown.

View File

@ -3,15 +3,15 @@ msgstr ""
"Project-Id-Version: Advanced Custom Fields Pro v5.2.9\n" "Project-Id-Version: Advanced Custom Fields Pro v5.2.9\n"
"Report-Msgid-Bugs-To: http://support.advancedcustomfields.com\n" "Report-Msgid-Bugs-To: http://support.advancedcustomfields.com\n"
"POT-Creation-Date: 2016-04-07 10:33+1000\n" "POT-Creation-Date: 2016-04-07 10:33+1000\n"
"PO-Revision-Date: 2016-04-07 10:33+1000\n" "PO-Revision-Date: 2016-04-19 18:32+0200\n"
"Last-Translator: Elliot Condon <e@elliotcondon.com>\n" "Last-Translator: Maxime BERNARD-JACQUET <maxime@smoothie-creative.com>\n"
"Language-Team: Dysign <maxime@dysign.fr>\n" "Language-Team: Dysign <maxime@dysign.fr>\n"
"Language: fr_FR\n" "Language: fr_FR\n"
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n > 1);\n" "Plural-Forms: nplurals=2; plural=(n > 1);\n"
"X-Generator: Poedit 1.8.1\n" "X-Generator: Poedit 1.8.6\n"
"X-Poedit-SourceCharset: UTF-8\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__;" "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;" "esc_attr_e;esc_attr_x:1,2c;esc_html__;esc_html_e;esc_html_x:1,2c;_n_noop:1,2;"
@ -448,7 +448,7 @@ msgstr "Tutoriels"
#: admin/field-groups.php:637 #: admin/field-groups.php:637
msgid "FAQ" msgid "FAQ"
msgstr "" msgstr "FAQ"
# @ acf # @ acf
#: admin/field-groups.php:642 #: admin/field-groups.php:642
@ -922,7 +922,7 @@ msgstr "Sous les champs"
# @ acf # @ acf
#: admin/views/field-group-options.php:82 #: admin/views/field-group-options.php:82
msgid "Order No." msgid "Order No."
msgstr "Commande" msgstr "Numéro dordre"
#: admin/views/field-group-options.php:83 #: admin/views/field-group-options.php:83
msgid "Field groups with a lower order will appear first" msgid "Field groups with a lower order will appear first"
@ -1552,9 +1552,8 @@ msgid "Content"
msgstr "Contenu" msgstr "Contenu"
#: api/api-template.php:1281 #: api/api-template.php:1281
#, fuzzy
msgid "Validate Email" msgid "Validate Email"
msgstr "Echec de la validation" msgstr "Valider lemail"
#: core/field.php:132 #: core/field.php:132
msgid "Basic" msgid "Basic"
@ -1714,7 +1713,6 @@ msgstr "Montrer un mois différent"
# @ acf # @ acf
#: fields/date_picker.php:174 #: fields/date_picker.php:174
#, fuzzy
msgid "Display Format" msgid "Display Format"
msgstr "Format d'affichage" msgstr "Format d'affichage"
@ -1801,7 +1799,6 @@ msgstr "Liés à cette publication"
# @ acf # @ acf
#: fields/file.php:142 #: fields/file.php:142
#, fuzzy
msgid "File name" msgid "File name"
msgstr "Nom du fichier" msgstr "Nom du fichier"
@ -2533,9 +2530,8 @@ msgstr "Activer votre licence"
# @ acf # @ acf
#: pro/admin/views/settings-updates.php:21 #: pro/admin/views/settings-updates.php:21
#, fuzzy
msgid "License Information" msgid "License Information"
msgstr "Informations de mise à jour" msgstr "Informations sur la licence"
#: pro/admin/views/settings-updates.php:24 #: pro/admin/views/settings-updates.php:24
msgid "" msgid ""
@ -2864,9 +2860,8 @@ msgstr ""
"professionnels" "professionnels"
#. Author of the plugin/theme #. Author of the plugin/theme
#, fuzzy
msgid "Elliot Condon" msgid "Elliot Condon"
msgstr "elliot condon" msgstr "Elliot Condon"
#. Author URI of the plugin/theme #. Author URI of the plugin/theme
msgid "http://www.elliotcondon.com/" msgid "http://www.elliotcondon.com/"

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

BIN
lang/acf-pt_PT.mo Normal file

Binary file not shown.

2641
lang/acf-pt_PT.po Normal file

File diff suppressed because it is too large Load Diff

View File

@ -3,7 +3,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: Advanced Custom Fields\n" "Project-Id-Version: Advanced Custom Fields\n"
"Report-Msgid-Bugs-To: http://support.advancedcustomfields.com\n" "Report-Msgid-Bugs-To: http://support.advancedcustomfields.com\n"
"POT-Creation-Date: 2016-04-07 10:31+1000\n" "POT-Creation-Date: 2016-05-16 14:13+1000\n"
"PO-Revision-Date: 2015-06-11 13:00+1000\n" "PO-Revision-Date: 2015-06-11 13:00+1000\n"
"Last-Translator: Elliot Condon <e@elliotcondon.com>\n" "Last-Translator: Elliot Condon <e@elliotcondon.com>\n"
"Language-Team: Elliot Condon <e@elliotcondon.com>\n" "Language-Team: Elliot Condon <e@elliotcondon.com>\n"
@ -181,7 +181,7 @@ msgstr ""
#: admin/views/field-group-field-conditional-logic.php:62 #: admin/views/field-group-field-conditional-logic.php:62
#: admin/views/field-group-field-conditional-logic.php:162 #: admin/views/field-group-field-conditional-logic.php:162
#: admin/views/field-group-locations.php:59 #: admin/views/field-group-locations.php:59
#: admin/views/field-group-locations.php:135 api/api-helpers.php:3649 #: admin/views/field-group-locations.php:135 api/api-helpers.php:3673
msgid "or" msgid "or"
msgstr "" msgstr ""
@ -263,8 +263,8 @@ msgstr ""
#: admin/field-group.php:864 admin/field-group.php:872 #: admin/field-group.php:864 admin/field-group.php:872
#: admin/field-group.php:886 admin/field-group.php:893 #: admin/field-group.php:886 admin/field-group.php:893
#: admin/field-group.php:910 admin/field-group.php:927 fields/file.php:235 #: admin/field-group.php:910 admin/field-group.php:927 fields/file.php:241
#: fields/image.php:231 pro/fields/gallery.php:661 #: fields/image.php:237 pro/fields/gallery.php:684
msgid "All" msgid "All"
msgstr "" msgstr ""
@ -332,14 +332,14 @@ msgstr[1] ""
msgid "Sync available" msgid "Sync available"
msgstr "" msgstr ""
#: admin/field-groups.php:525 api/api-template.php:989 #: admin/field-groups.php:525 api/api-template.php:1058
#: api/api-template.php:1202 pro/fields/gallery.php:374 #: api/api-template.php:1271 pro/fields/gallery.php:371
msgid "Title" msgid "Title"
msgstr "" msgstr ""
#: admin/field-groups.php:526 admin/views/field-group-options.php:93 #: admin/field-groups.php:526 admin/views/field-group-options.php:93
#: admin/views/update-network.php:20 admin/views/update-network.php:28 #: admin/views/update-network.php:20 admin/views/update-network.php:28
#: pro/fields/gallery.php:401 #: pro/fields/gallery.php:398
msgid "Description" msgid "Description"
msgstr "" msgstr ""
@ -353,11 +353,8 @@ msgid "Changelog"
msgstr "" msgstr ""
#: admin/field-groups.php:625 #: admin/field-groups.php:625
msgid "See what's new in" #, php-format
msgstr "" msgid "See what's new in <a href=\"%s\">version %s</a>."
#: admin/field-groups.php:625
msgid "version"
msgstr "" msgstr ""
#: admin/field-groups.php:627 #: admin/field-groups.php:627
@ -385,7 +382,7 @@ msgstr ""
msgid "Actions" msgid "Actions"
msgstr "" msgstr ""
#: admin/field-groups.php:634 fields/relationship.php:717 #: admin/field-groups.php:634 fields/relationship.php:720
msgid "Filters" msgid "Filters"
msgstr "" msgstr ""
@ -452,7 +449,7 @@ msgstr ""
msgid "No field groups selected" msgid "No field groups selected"
msgstr "" msgstr ""
#: admin/settings-tools.php:188 fields/file.php:169 #: admin/settings-tools.php:188 fields/file.php:175
msgid "No file selected" msgid "No file selected"
msgstr "" msgstr ""
@ -492,35 +489,47 @@ msgstr ""
msgid "Upgrade" msgid "Upgrade"
msgstr "" msgstr ""
#: admin/update.php:328 #: admin/update.php:349
msgid "Upgrade Database" msgid "Upgrade Database"
msgstr "" msgstr ""
#: admin/update.php:414
msgid "Error validating request"
msgstr ""
#: admin/update.php:437 admin/views/update.php:110
msgid "No updates available"
msgstr ""
#: admin/update.php:454
msgid "Error loading update"
msgstr ""
#: admin/views/field-group-field-conditional-logic.php:29 #: admin/views/field-group-field-conditional-logic.php:29
msgid "Conditional Logic" msgid "Conditional Logic"
msgstr "" msgstr ""
#: admin/views/field-group-field-conditional-logic.php:40 #: admin/views/field-group-field-conditional-logic.php:40
#: admin/views/field-group-field.php:140 fields/checkbox.php:246 #: admin/views/field-group-field.php:140 fields/checkbox.php:243
#: fields/message.php:144 fields/page_link.php:539 fields/page_link.php:553 #: fields/message.php:144 fields/page_link.php:539 fields/page_link.php:553
#: fields/post_object.php:403 fields/post_object.php:417 fields/select.php:377 #: fields/post_object.php:403 fields/post_object.php:417 fields/radio.php:250
#: fields/select.php:391 fields/select.php:405 fields/select.php:419 #: fields/select.php:377 fields/select.php:391 fields/select.php:405
#: fields/tab.php:130 fields/taxonomy.php:784 fields/taxonomy.php:798 #: fields/select.php:419 fields/tab.php:130 fields/taxonomy.php:784
#: fields/taxonomy.php:812 fields/taxonomy.php:826 fields/user.php:416 #: fields/taxonomy.php:798 fields/taxonomy.php:812 fields/taxonomy.php:826
#: fields/user.php:430 fields/wysiwyg.php:418 #: fields/user.php:416 fields/user.php:430 fields/wysiwyg.php:418
#: pro/admin/views/settings-updates.php:93 #: pro/admin/views/settings-updates.php:93
msgid "Yes" msgid "Yes"
msgstr "" msgstr ""
#: admin/views/field-group-field-conditional-logic.php:41 #: admin/views/field-group-field-conditional-logic.php:41
#: admin/views/field-group-field.php:141 fields/checkbox.php:247 #: admin/views/field-group-field.php:141 fields/checkbox.php:244
#: fields/message.php:145 fields/page_link.php:540 fields/page_link.php:554 #: fields/message.php:145 fields/page_link.php:540 fields/page_link.php:554
#: fields/post_object.php:404 fields/post_object.php:418 fields/select.php:378 #: fields/post_object.php:404 fields/post_object.php:418 fields/radio.php:251
#: fields/select.php:392 fields/select.php:406 fields/select.php:420 #: fields/select.php:378 fields/select.php:392 fields/select.php:406
#: fields/tab.php:131 fields/taxonomy.php:699 fields/taxonomy.php:785 #: fields/select.php:420 fields/tab.php:131 fields/taxonomy.php:699
#: fields/taxonomy.php:799 fields/taxonomy.php:813 fields/taxonomy.php:827 #: fields/taxonomy.php:785 fields/taxonomy.php:799 fields/taxonomy.php:813
#: fields/user.php:417 fields/user.php:431 fields/wysiwyg.php:419 #: fields/taxonomy.php:827 fields/user.php:417 fields/user.php:431
#: pro/admin/views/settings-updates.php:103 #: fields/wysiwyg.php:419 pro/admin/views/settings-updates.php:103
msgid "No" msgid "No"
msgstr "" msgstr ""
@ -548,11 +557,17 @@ msgstr ""
msgid "Add rule group" msgid "Add rule group"
msgstr "" msgstr ""
#: admin/views/field-group-field.php:49 pro/fields/flexible-content.php:342
#: pro/fields/repeater.php:302
msgid "Drag to reorder"
msgstr ""
#: admin/views/field-group-field.php:54 admin/views/field-group-field.php:57 #: admin/views/field-group-field.php:54 admin/views/field-group-field.php:57
msgid "Edit field" msgid "Edit field"
msgstr "" msgstr ""
#: admin/views/field-group-field.php:57 pro/fields/gallery.php:363 #: admin/views/field-group-field.php:57 core/media.php:55 fields/image.php:142
#: pro/fields/gallery.php:358
msgid "Edit" msgid "Edit"
msgstr "" msgstr ""
@ -669,7 +684,7 @@ msgstr ""
msgid "Post" msgid "Post"
msgstr "" msgstr ""
#: admin/views/field-group-locations.php:6 fields/relationship.php:723 #: admin/views/field-group-locations.php:6 fields/relationship.php:726
msgid "Post Type" msgid "Post Type"
msgstr "" msgstr ""
@ -878,7 +893,7 @@ msgstr ""
msgid "Page Attributes" msgid "Page Attributes"
msgstr "" msgstr ""
#: admin/views/field-group-options.php:123 fields/relationship.php:736 #: admin/views/field-group-options.php:123 fields/relationship.php:739
msgid "Featured Image" msgid "Featured Image"
msgstr "" msgstr ""
@ -1236,8 +1251,9 @@ msgstr ""
msgid "Upgrade complete" msgid "Upgrade complete"
msgstr "" msgstr ""
#: admin/views/update-network.php:161 #: admin/views/update-network.php:161 admin/views/update.php:14
msgid "Upgrading data to" #, php-format
msgid "Upgrading data to version %s"
msgstr "" msgstr ""
#: admin/views/update-notice.php:23 #: admin/views/update-notice.php:23
@ -1259,92 +1275,83 @@ msgstr ""
msgid "Reading upgrade tasks..." msgid "Reading upgrade tasks..."
msgstr "" msgstr ""
#: admin/views/update.php:14
#, php-format
msgid "Upgrading data to version %s"
msgstr ""
#: admin/views/update.php:16 #: admin/views/update.php:16
msgid "See what's new" msgid "See what's new"
msgstr "" msgstr ""
#: admin/views/update.php:110 #: api/api-helpers.php:933
msgid "No updates available"
msgstr ""
#: api/api-helpers.php:937
msgid "Thumbnail" msgid "Thumbnail"
msgstr "" msgstr ""
#: api/api-helpers.php:938 #: api/api-helpers.php:934
msgid "Medium" msgid "Medium"
msgstr "" msgstr ""
#: api/api-helpers.php:939 #: api/api-helpers.php:935
msgid "Large" msgid "Large"
msgstr "" msgstr ""
#: api/api-helpers.php:987 #: api/api-helpers.php:984
msgid "Full Size" msgid "Full Size"
msgstr "" msgstr ""
#: api/api-helpers.php:1177 api/api-helpers.php:1740 #: api/api-helpers.php:1196 api/api-helpers.php:1759
msgid "(no title)" msgid "(no title)"
msgstr "" msgstr ""
#: api/api-helpers.php:3570 #: api/api-helpers.php:3594
#, php-format #, php-format
msgid "Image width must be at least %dpx." msgid "Image width must be at least %dpx."
msgstr "" msgstr ""
#: api/api-helpers.php:3575 #: api/api-helpers.php:3599
#, php-format #, php-format
msgid "Image width must not exceed %dpx." msgid "Image width must not exceed %dpx."
msgstr "" msgstr ""
#: api/api-helpers.php:3591 #: api/api-helpers.php:3615
#, php-format #, php-format
msgid "Image height must be at least %dpx." msgid "Image height must be at least %dpx."
msgstr "" msgstr ""
#: api/api-helpers.php:3596 #: api/api-helpers.php:3620
#, php-format #, php-format
msgid "Image height must not exceed %dpx." msgid "Image height must not exceed %dpx."
msgstr "" msgstr ""
#: api/api-helpers.php:3614 #: api/api-helpers.php:3638
#, php-format #, php-format
msgid "File size must be at least %s." msgid "File size must be at least %s."
msgstr "" msgstr ""
#: api/api-helpers.php:3619 #: api/api-helpers.php:3643
#, php-format #, php-format
msgid "File size must must not exceed %s." msgid "File size must must not exceed %s."
msgstr "" msgstr ""
#: api/api-helpers.php:3653 #: api/api-helpers.php:3677
#, php-format #, php-format
msgid "File type must be %s." msgid "File type must be %s."
msgstr "" msgstr ""
#: api/api-template.php:1004 #: api/api-template.php:1073
msgid "Spam Detected" msgid "Spam Detected"
msgstr "" msgstr ""
#: api/api-template.php:1147 pro/api/api-options-page.php:50 #: api/api-template.php:1216 core/media.php:56 pro/api/api-options-page.php:50
#: pro/fields/gallery.php:572 #: pro/fields/gallery.php:586
msgid "Update" msgid "Update"
msgstr "" msgstr ""
#: api/api-template.php:1148 #: api/api-template.php:1217
msgid "Post updated" msgid "Post updated"
msgstr "" msgstr ""
#: api/api-template.php:1216 core/field.php:133 #: api/api-template.php:1285 core/field.php:133
msgid "Content" msgid "Content"
msgstr "" msgstr ""
#: api/api-template.php:1281 #: api/api-template.php:1350
msgid "Validate Email" msgid "Validate Email"
msgstr "" msgstr ""
@ -1364,7 +1371,7 @@ msgstr ""
msgid "jQuery" msgid "jQuery"
msgstr "" msgstr ""
#: core/field.php:137 fields/checkbox.php:226 fields/radio.php:231 #: core/field.php:137 fields/checkbox.php:223 fields/radio.php:288
#: pro/fields/flexible-content.php:491 pro/fields/flexible-content.php:540 #: pro/fields/flexible-content.php:491 pro/fields/flexible-content.php:540
#: pro/fields/repeater.php:459 #: pro/fields/repeater.php:459
msgid "Layout" msgid "Layout"
@ -1382,7 +1389,7 @@ msgstr ""
msgid "Validation successful" msgid "Validation successful"
msgstr "" msgstr ""
#: core/input.php:258 core/validation.php:306 forms/widget.php:238 #: core/input.php:258 core/validation.php:306 forms/widget.php:234
msgid "Validation failed" msgid "Validation failed"
msgstr "" msgstr ""
@ -1399,6 +1406,16 @@ msgstr ""
msgid "Restricted" msgid "Restricted"
msgstr "" msgstr ""
#: core/media.php:54 fields/select.php:36 fields/select.php:167
#: fields/taxonomy.php:771
msgid "Select"
msgstr ""
#: core/media.php:57 fields/file.php:49 fields/image.php:54
#: pro/fields/gallery.php:56
msgid "Uploaded to this post"
msgstr ""
#: core/validation.php:207 #: core/validation.php:207
#, php-format #, php-format
msgid "%s value is required" msgid "%s value is required"
@ -1408,50 +1425,50 @@ msgstr ""
msgid "Checkbox" msgid "Checkbox"
msgstr "" msgstr ""
#: fields/checkbox.php:144 #: fields/checkbox.php:141
msgid "Toggle All" msgid "Toggle All"
msgstr "" msgstr ""
#: fields/checkbox.php:208 fields/radio.php:193 fields/select.php:354 #: fields/checkbox.php:205 fields/radio.php:236 fields/select.php:354
msgid "Choices" msgid "Choices"
msgstr "" msgstr ""
#: fields/checkbox.php:209 fields/radio.php:194 fields/select.php:355 #: fields/checkbox.php:206 fields/radio.php:237 fields/select.php:355
msgid "Enter each choice on a new line." msgid "Enter each choice on a new line."
msgstr "" msgstr ""
#: fields/checkbox.php:209 fields/radio.php:194 fields/select.php:355 #: fields/checkbox.php:206 fields/radio.php:237 fields/select.php:355
msgid "For more control, you may specify both a value and label like this:" msgid "For more control, you may specify both a value and label like this:"
msgstr "" msgstr ""
#: fields/checkbox.php:209 fields/radio.php:194 fields/select.php:355 #: fields/checkbox.php:206 fields/radio.php:237 fields/select.php:355
msgid "red : Red" msgid "red : Red"
msgstr "" msgstr ""
#: fields/checkbox.php:217 fields/color_picker.php:147 fields/email.php:124 #: fields/checkbox.php:214 fields/color_picker.php:147 fields/email.php:124
#: fields/number.php:150 fields/radio.php:222 fields/select.php:363 #: fields/number.php:150 fields/radio.php:279 fields/select.php:363
#: fields/text.php:148 fields/textarea.php:145 fields/true_false.php:115 #: fields/text.php:148 fields/textarea.php:145 fields/true_false.php:115
#: fields/url.php:117 fields/wysiwyg.php:379 #: fields/url.php:117 fields/wysiwyg.php:379
msgid "Default Value" msgid "Default Value"
msgstr "" msgstr ""
#: fields/checkbox.php:218 fields/select.php:364 #: fields/checkbox.php:215 fields/select.php:364
msgid "Enter each default value on a new line" msgid "Enter each default value on a new line"
msgstr "" msgstr ""
#: fields/checkbox.php:232 fields/radio.php:237 #: fields/checkbox.php:229 fields/radio.php:294
msgid "Vertical" msgid "Vertical"
msgstr "" msgstr ""
#: fields/checkbox.php:233 fields/radio.php:238 #: fields/checkbox.php:230 fields/radio.php:295
msgid "Horizontal" msgid "Horizontal"
msgstr "" msgstr ""
#: fields/checkbox.php:240 #: fields/checkbox.php:237
msgid "Toggle" msgid "Toggle"
msgstr "" msgstr ""
#: fields/checkbox.php:241 #: fields/checkbox.php:238
msgid "Prepend an extra checkbox to toggle all choices" msgid "Prepend an extra checkbox to toggle all choices"
msgstr "" msgstr ""
@ -1500,7 +1517,7 @@ msgid "The format displayed when editing a post"
msgstr "" msgstr ""
#: fields/date_picker.php:189 fields/post_object.php:426 #: fields/date_picker.php:189 fields/post_object.php:426
#: fields/relationship.php:763 #: fields/relationship.php:766
msgid "Return Format" msgid "Return Format"
msgstr "" msgstr ""
@ -1516,7 +1533,7 @@ msgstr ""
msgid "Email" msgid "Email"
msgstr "" msgstr ""
#: fields/email.php:125 fields/number.php:151 fields/radio.php:223 #: fields/email.php:125 fields/number.php:151 fields/radio.php:280
#: fields/text.php:149 fields/textarea.php:146 fields/url.php:118 #: fields/text.php:149 fields/textarea.php:146 fields/url.php:118
#: fields/wysiwyg.php:380 #: fields/wysiwyg.php:380
msgid "Appears when creating a new post" msgid "Appears when creating a new post"
@ -1564,73 +1581,69 @@ msgstr ""
msgid "Update File" msgid "Update File"
msgstr "" msgstr ""
#: fields/file.php:49 fields/image.php:54 pro/fields/gallery.php:55 #: fields/file.php:148
msgid "Uploaded to this post"
msgstr ""
#: fields/file.php:142
msgid "File name" msgid "File name"
msgstr "" msgstr ""
#: fields/file.php:146 fields/file.php:247 fields/file.php:258 #: fields/file.php:152 fields/file.php:253 fields/file.php:264
#: fields/image.php:262 fields/image.php:295 pro/fields/gallery.php:692 #: fields/image.php:268 fields/image.php:301 pro/fields/gallery.php:715
#: pro/fields/gallery.php:725 #: pro/fields/gallery.php:748
msgid "File size" msgid "File size"
msgstr "" msgstr ""
#: fields/file.php:169 #: fields/file.php:175
msgid "Add File" msgid "Add File"
msgstr "" msgstr ""
#: fields/file.php:214 fields/image.php:200 fields/taxonomy.php:835 #: fields/file.php:220 fields/image.php:206 fields/taxonomy.php:835
msgid "Return Value" msgid "Return Value"
msgstr "" msgstr ""
#: fields/file.php:215 fields/image.php:201 #: fields/file.php:221 fields/image.php:207
msgid "Specify the returned value on front end" msgid "Specify the returned value on front end"
msgstr "" msgstr ""
#: fields/file.php:220 #: fields/file.php:226
msgid "File Array" msgid "File Array"
msgstr "" msgstr ""
#: fields/file.php:221 #: fields/file.php:227
msgid "File URL" msgid "File URL"
msgstr "" msgstr ""
#: fields/file.php:222 #: fields/file.php:228
msgid "File ID" msgid "File ID"
msgstr "" msgstr ""
#: fields/file.php:229 fields/image.php:225 pro/fields/gallery.php:655 #: fields/file.php:235 fields/image.php:231 pro/fields/gallery.php:678
msgid "Library" msgid "Library"
msgstr "" msgstr ""
#: fields/file.php:230 fields/image.php:226 pro/fields/gallery.php:656 #: fields/file.php:236 fields/image.php:232 pro/fields/gallery.php:679
msgid "Limit the media library choice" msgid "Limit the media library choice"
msgstr "" msgstr ""
#: fields/file.php:236 fields/image.php:232 pro/fields/gallery.php:662 #: fields/file.php:242 fields/image.php:238 pro/fields/gallery.php:685
msgid "Uploaded to post" msgid "Uploaded to post"
msgstr "" msgstr ""
#: fields/file.php:243 fields/image.php:239 pro/fields/gallery.php:669 #: fields/file.php:249 fields/image.php:245 pro/fields/gallery.php:692
msgid "Minimum" msgid "Minimum"
msgstr "" msgstr ""
#: fields/file.php:244 fields/file.php:255 #: fields/file.php:250 fields/file.php:261
msgid "Restrict which files can be uploaded" msgid "Restrict which files can be uploaded"
msgstr "" msgstr ""
#: fields/file.php:254 fields/image.php:272 pro/fields/gallery.php:702 #: fields/file.php:260 fields/image.php:278 pro/fields/gallery.php:725
msgid "Maximum" msgid "Maximum"
msgstr "" msgstr ""
#: fields/file.php:265 fields/image.php:305 pro/fields/gallery.php:735 #: fields/file.php:271 fields/image.php:311 pro/fields/gallery.php:758
msgid "Allowed file types" msgid "Allowed file types"
msgstr "" msgstr ""
#: fields/file.php:266 fields/image.php:306 pro/fields/gallery.php:736 #: fields/file.php:272 fields/image.php:312 pro/fields/gallery.php:759
msgid "Comma separated list. Leave blank for all types" msgid "Comma separated list. Leave blank for all types"
msgstr "" msgstr ""
@ -1646,7 +1659,7 @@ msgstr ""
msgid "Sorry, this browser does not support geolocation" msgid "Sorry, this browser does not support geolocation"
msgstr "" msgstr ""
#: fields/google-map.php:133 fields/relationship.php:722 #: fields/google-map.php:133 fields/relationship.php:725
msgid "Search" msgid "Search"
msgstr "" msgstr ""
@ -1678,8 +1691,8 @@ msgstr ""
msgid "Set the initial zoom level" msgid "Set the initial zoom level"
msgstr "" msgstr ""
#: fields/google-map.php:203 fields/image.php:251 fields/image.php:284 #: fields/google-map.php:203 fields/image.php:257 fields/image.php:290
#: fields/oembed.php:275 pro/fields/gallery.php:681 pro/fields/gallery.php:714 #: fields/oembed.php:275 pro/fields/gallery.php:704 pro/fields/gallery.php:737
msgid "Height" msgid "Height"
msgstr "" msgstr ""
@ -1695,11 +1708,11 @@ msgstr ""
msgid "Select Image" msgid "Select Image"
msgstr "" msgstr ""
#: fields/image.php:52 pro/fields/gallery.php:53 #: fields/image.php:52 pro/fields/gallery.php:54
msgid "Edit Image" msgid "Edit Image"
msgstr "" msgstr ""
#: fields/image.php:53 pro/fields/gallery.php:54 #: fields/image.php:53 pro/fields/gallery.php:55
msgid "Update Image" msgid "Update Image"
msgstr "" msgstr ""
@ -1707,41 +1720,45 @@ msgstr ""
msgid "All images" msgid "All images"
msgstr "" msgstr ""
#: fields/image.php:152 #: fields/image.php:144 pro/fields/gallery.php:359 pro/fields/gallery.php:542
msgid "Remove"
msgstr ""
#: fields/image.php:158
msgid "No image selected" msgid "No image selected"
msgstr "" msgstr ""
#: fields/image.php:152 #: fields/image.php:158
msgid "Add Image" msgid "Add Image"
msgstr "" msgstr ""
#: fields/image.php:206 #: fields/image.php:212
msgid "Image Array" msgid "Image Array"
msgstr "" msgstr ""
#: fields/image.php:207 #: fields/image.php:213
msgid "Image URL" msgid "Image URL"
msgstr "" msgstr ""
#: fields/image.php:208 #: fields/image.php:214
msgid "Image ID" msgid "Image ID"
msgstr "" msgstr ""
#: fields/image.php:215 pro/fields/gallery.php:645 #: fields/image.php:221 pro/fields/gallery.php:655
msgid "Preview Size" msgid "Preview Size"
msgstr "" msgstr ""
#: fields/image.php:216 pro/fields/gallery.php:646 #: fields/image.php:222 pro/fields/gallery.php:656
msgid "Shown when entering data" msgid "Shown when entering data"
msgstr "" msgstr ""
#: fields/image.php:240 fields/image.php:273 pro/fields/gallery.php:670 #: fields/image.php:246 fields/image.php:279 pro/fields/gallery.php:693
#: pro/fields/gallery.php:703 #: pro/fields/gallery.php:726
msgid "Restrict which images can be uploaded" msgid "Restrict which images can be uploaded"
msgstr "" msgstr ""
#: fields/image.php:243 fields/image.php:276 fields/oembed.php:264 #: fields/image.php:249 fields/image.php:282 fields/oembed.php:264
#: pro/fields/gallery.php:673 pro/fields/gallery.php:706 #: pro/fields/gallery.php:696 pro/fields/gallery.php:729
msgid "Width" msgid "Width"
msgstr "" msgstr ""
@ -1828,27 +1845,27 @@ msgid "Archives"
msgstr "" msgstr ""
#: fields/page_link.php:506 fields/post_object.php:370 #: fields/page_link.php:506 fields/post_object.php:370
#: fields/relationship.php:689 #: fields/relationship.php:692
msgid "Filter by Post Type" msgid "Filter by Post Type"
msgstr "" msgstr ""
#: fields/page_link.php:514 fields/post_object.php:378 #: fields/page_link.php:514 fields/post_object.php:378
#: fields/relationship.php:697 #: fields/relationship.php:700
msgid "All post types" msgid "All post types"
msgstr "" msgstr ""
#: fields/page_link.php:520 fields/post_object.php:384 #: fields/page_link.php:520 fields/post_object.php:384
#: fields/relationship.php:703 #: fields/relationship.php:706
msgid "Filter by Taxonomy" msgid "Filter by Taxonomy"
msgstr "" msgstr ""
#: fields/page_link.php:528 fields/post_object.php:392 #: fields/page_link.php:528 fields/post_object.php:392
#: fields/relationship.php:711 #: fields/relationship.php:714
msgid "All taxonomies" msgid "All taxonomies"
msgstr "" msgstr ""
#: fields/page_link.php:534 fields/post_object.php:398 fields/select.php:372 #: fields/page_link.php:534 fields/post_object.php:398 fields/radio.php:245
#: fields/taxonomy.php:779 fields/user.php:411 #: fields/select.php:372 fields/taxonomy.php:779 fields/user.php:411
msgid "Allow Null?" msgid "Allow Null?"
msgstr "" msgstr ""
@ -1862,11 +1879,11 @@ msgid "Password"
msgstr "" msgstr ""
#: fields/post_object.php:36 fields/post_object.php:431 #: fields/post_object.php:36 fields/post_object.php:431
#: fields/relationship.php:768 #: fields/relationship.php:771
msgid "Post Object" msgid "Post Object"
msgstr "" msgstr ""
#: fields/post_object.php:432 fields/relationship.php:769 #: fields/post_object.php:432 fields/relationship.php:772
msgid "Post ID" msgid "Post ID"
msgstr "" msgstr ""
@ -1874,19 +1891,19 @@ msgstr ""
msgid "Radio Button" msgid "Radio Button"
msgstr "" msgstr ""
#: fields/radio.php:202 #: fields/radio.php:259
msgid "Other" msgid "Other"
msgstr "" msgstr ""
#: fields/radio.php:206 #: fields/radio.php:263
msgid "Add 'other' choice to allow for custom values" msgid "Add 'other' choice to allow for custom values"
msgstr "" msgstr ""
#: fields/radio.php:212 #: fields/radio.php:269
msgid "Save Other" msgid "Save Other"
msgstr "" msgstr ""
#: fields/radio.php:216 #: fields/radio.php:273
msgid "Save 'other' values to the field's choices" msgid "Save 'other' values to the field's choices"
msgstr "" msgstr ""
@ -1910,49 +1927,45 @@ msgstr ""
msgid "No matches found" msgid "No matches found"
msgstr "" msgstr ""
#: fields/relationship.php:570 #: fields/relationship.php:573
msgid "Search..." msgid "Search..."
msgstr "" msgstr ""
#: fields/relationship.php:579 #: fields/relationship.php:582
msgid "Select post type" msgid "Select post type"
msgstr "" msgstr ""
#: fields/relationship.php:592 #: fields/relationship.php:595
msgid "Select taxonomy" msgid "Select taxonomy"
msgstr "" msgstr ""
#: fields/relationship.php:724 fields/taxonomy.php:36 fields/taxonomy.php:749 #: fields/relationship.php:727 fields/taxonomy.php:36 fields/taxonomy.php:749
msgid "Taxonomy" msgid "Taxonomy"
msgstr "" msgstr ""
#: fields/relationship.php:731 #: fields/relationship.php:734
msgid "Elements" msgid "Elements"
msgstr "" msgstr ""
#: fields/relationship.php:732 #: fields/relationship.php:735
msgid "Selected elements will be displayed in each result" msgid "Selected elements will be displayed in each result"
msgstr "" msgstr ""
#: fields/relationship.php:743 #: fields/relationship.php:746
msgid "Minimum posts" msgid "Minimum posts"
msgstr "" msgstr ""
#: fields/relationship.php:752 #: fields/relationship.php:755
msgid "Maximum posts" msgid "Maximum posts"
msgstr "" msgstr ""
#: fields/relationship.php:856 pro/fields/gallery.php:817 #: fields/relationship.php:859 pro/fields/gallery.php:831
#, php-format #, php-format
msgid "%s requires at least %s selection" msgid "%s requires at least %s selection"
msgid_plural "%s requires at least %s selections" msgid_plural "%s requires at least %s selections"
msgstr[0] "" msgstr[0] ""
msgstr[1] "" msgstr[1] ""
#: fields/select.php:36 fields/select.php:167 fields/taxonomy.php:771
msgid "Select"
msgstr ""
#: fields/select.php:400 #: fields/select.php:400
msgid "Stylised UI" msgid "Stylised UI"
msgstr "" msgstr ""
@ -2168,11 +2181,11 @@ msgstr ""
msgid "Show Media Upload Buttons?" msgid "Show Media Upload Buttons?"
msgstr "" msgstr ""
#: forms/post.php:294 pro/admin/options-page.php:416 #: forms/comment.php:166 forms/post.php:294 pro/admin/options-page.php:416
msgid "Edit field group" msgid "Edit field group"
msgstr "" msgstr ""
#: forms/widget.php:239 #: forms/widget.php:235
#, php-format #, php-format
msgid "1 field requires attention." msgid "1 field requires attention."
msgid_plural "%d fields require attention." msgid_plural "%d fields require attention."
@ -2233,13 +2246,11 @@ msgid "License Information"
msgstr "" msgstr ""
#: pro/admin/views/settings-updates.php:24 #: pro/admin/views/settings-updates.php:24
#, php-format
msgid "" msgid ""
"To unlock updates, please enter your license key below. If you don't have a " "To unlock updates, please enter your license key below. If you don't have a "
"licence key, please see" "licence key, please see <a href=\"%s\" target=\"_blank\">details & pricing</"
msgstr "" "a>."
#: pro/admin/views/settings-updates.php:24
msgid "details & pricing"
msgstr "" msgstr ""
#: pro/admin/views/settings-updates.php:33 #: pro/admin/views/settings-updates.php:33
@ -2282,12 +2293,12 @@ msgstr ""
msgid "Options" msgid "Options"
msgstr "" msgstr ""
#: pro/core/updates.php:198 #: pro/core/updates.php:194
#, php-format #, php-format
msgid "" msgid ""
"To enable updates, please enter your license key on the <a href=\"%s" "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" "\">Updates</a> page. If you don't have a licence key, please see <a href=\"%s"
"\">details & pricing</a>" "\">details & pricing</a>."
msgstr "" msgstr ""
#: pro/fields/flexible-content.php:36 #: pro/fields/flexible-content.php:36
@ -2407,66 +2418,78 @@ msgstr ""
msgid "Gallery" msgid "Gallery"
msgstr "" msgstr ""
#: pro/fields/gallery.php:52 #: pro/fields/gallery.php:53
msgid "Add Image to Gallery" msgid "Add Image to Gallery"
msgstr "" msgstr ""
#: pro/fields/gallery.php:56 #: pro/fields/gallery.php:57
msgid "Maximum selection reached" msgid "Maximum selection reached"
msgstr "" msgstr ""
#: pro/fields/gallery.php:343 #: pro/fields/gallery.php:337
msgid "Length" msgid "Length"
msgstr "" msgstr ""
#: pro/fields/gallery.php:363 #: pro/fields/gallery.php:380
msgid "Remove"
msgstr ""
#: pro/fields/gallery.php:383
msgid "Caption" msgid "Caption"
msgstr "" msgstr ""
#: pro/fields/gallery.php:392 #: pro/fields/gallery.php:389
msgid "Alt Text" msgid "Alt Text"
msgstr "" msgstr ""
#: pro/fields/gallery.php:543 #: pro/fields/gallery.php:557
msgid "Add to gallery" msgid "Add to gallery"
msgstr "" msgstr ""
#: pro/fields/gallery.php:547 #: pro/fields/gallery.php:561
msgid "Bulk actions" msgid "Bulk actions"
msgstr "" msgstr ""
#: pro/fields/gallery.php:548 #: pro/fields/gallery.php:562
msgid "Sort by date uploaded" msgid "Sort by date uploaded"
msgstr "" msgstr ""
#: pro/fields/gallery.php:549 #: pro/fields/gallery.php:563
msgid "Sort by date modified" msgid "Sort by date modified"
msgstr "" msgstr ""
#: pro/fields/gallery.php:550 #: pro/fields/gallery.php:564
msgid "Sort by title" msgid "Sort by title"
msgstr "" msgstr ""
#: pro/fields/gallery.php:551 #: pro/fields/gallery.php:565
msgid "Reverse current order" msgid "Reverse current order"
msgstr "" msgstr ""
#: pro/fields/gallery.php:569 #: pro/fields/gallery.php:583
msgid "Close" msgid "Close"
msgstr "" msgstr ""
#: pro/fields/gallery.php:627 #: pro/fields/gallery.php:637
msgid "Minimum Selection" msgid "Minimum Selection"
msgstr "" msgstr ""
#: pro/fields/gallery.php:636 #: pro/fields/gallery.php:646
msgid "Maximum Selection" msgid "Maximum Selection"
msgstr "" msgstr ""
#: pro/fields/gallery.php:665
msgid "Insert"
msgstr ""
#: pro/fields/gallery.php:666
msgid "Specify where new attachments are added"
msgstr ""
#: pro/fields/gallery.php:670
msgid "Append to the end"
msgstr ""
#: pro/fields/gallery.php:671
msgid "Prepend to the beginning"
msgstr ""
#: pro/fields/repeater.php:36 #: pro/fields/repeater.php:36
msgid "Repeater" msgid "Repeater"
msgstr "" msgstr ""
@ -2479,10 +2502,6 @@ msgstr ""
msgid "Maximum rows reached ({max} rows)" msgid "Maximum rows reached ({max} rows)"
msgstr "" msgstr ""
#: pro/fields/repeater.php:302
msgid "Drag to reorder"
msgstr ""
#: pro/fields/repeater.php:349 #: pro/fields/repeater.php:349
msgid "Add row" msgid "Add row"
msgstr "" msgstr ""
@ -2512,7 +2531,7 @@ msgid "Maximum Rows"
msgstr "" msgstr ""
#. Plugin URI of the plugin/theme #. Plugin URI of the plugin/theme
msgid "http://www.advancedcustomfields.com/" msgid "https://www.advancedcustomfields.com/"
msgstr "" msgstr ""
#. Description of the plugin/theme #. Description of the plugin/theme

View File

@ -6,7 +6,7 @@ extract($args);
?> ?>
<div class="wrap acf-settings-wrap"> <div class="wrap acf-settings-wrap">
<h2><?php echo $page['page_title']; ?></h2> <h1><?php echo $page['page_title']; ?></h1>
<form id="post" method="post" name="post"> <form id="post" method="post" name="post">

View File

@ -21,7 +21,7 @@ $readonly = $active ? 1 : 0;
<h3><?php _e('License Information', 'acf'); ?></h3> <h3><?php _e('License Information', 'acf'); ?></h3>
</div> </div>
<div class="inner"> <div class="inner">
<p><?php _e("To unlock updates, please enter your license key below. If you don't have a licence key, please see",'acf'); ?> <a href="https://www.advancedcustomfields.com/pro" target="_blank"><?php _e('details & pricing', 'acf'); ?></a></p> <p><?php printf(__('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>.','acf'), esc_url('https://www.advancedcustomfields.com/pro')); ?></p>
<form action="" method="post"> <form action="" method="post">
<div class="acf-hidden"> <div class="acf-hidden">
<input type="hidden" name="_acfnonce" value="<?php echo wp_create_nonce( $nonce ); ?>" /> <input type="hidden" name="_acfnonce" value="<?php echo wp_create_nonce( $nonce ); ?>" />

View File

@ -50,7 +50,7 @@ function acf_pro_get_remote_url( $action = '', $args = array() ) {
// vars // vars
$url = "http://connect.advancedcustomfields.com/index.php?" . build_query($args); $url = "https://connect.advancedcustomfields.com/index.php?" . build_query($args);
// return // return

View File

@ -329,6 +329,17 @@ html[dir="rtl"] .acf-flexible-content .layout .acf-fc-layout-controlls {
border: #DFDFDF solid 1px; border: #DFDFDF solid 1px;
height: 400px; height: 400px;
position: relative; position: relative;
/* main */
/* attachments */
/* attachment */
/* hide attachment actions when sidebar is open */
/* toolbar */
/* sidebar */
/* side info */
/* side data */
/* column widths */
/* column widths clear */
/* resizable */
} }
.acf-gallery .acf-gallery-main { .acf-gallery .acf-gallery-main {
position: absolute; position: absolute;
@ -339,84 +350,101 @@ html[dir="rtl"] .acf-flexible-content .layout .acf-fc-layout-controlls {
background: #fff; background: #fff;
z-index: 2; z-index: 2;
} }
.acf-gallery-attachments { .acf-gallery .acf-gallery-attachments {
position: absolute; position: absolute;
top: 0; top: 0;
right: 0; right: 0;
bottom: 45px; bottom: 48px;
left: 0; left: 0;
padding: 5px; padding: 5px;
overflow: auto; overflow: auto;
} }
/* attachment */ .acf-gallery .acf-gallery-attachment {
.acf-gallery-attachment {
width: 25%; width: 25%;
float: left; float: left;
cursor: pointer; cursor: pointer;
position: relative; position: relative;
background: #fff; background: #fff;
/* sortable */
/* active */
/* audio, video */
/* icon */
/* rtl */
} }
.acf-gallery-attachment.ui-sortable-placeholder { .acf-gallery .acf-gallery-attachment .margin {
visibility: visible !important;
background: #F1F1F1;
}
.acf-gallery-attachment.ui-sortable-placeholder .margin {
visibility: hidden !important;
}
.acf-gallery-attachment .margin {
margin: 5px; margin: 5px;
border: #DFDFDF solid 1px; border: #DFDFDF solid 1px;
position: relative; position: relative;
overflow: hidden; overflow: hidden;
} }
.acf-gallery-attachment.active .margin { .acf-gallery .acf-gallery-attachment img {
box-shadow: 0 0 0 1px #FFFFFF, 0 0 0 5px #1E8CBE;
}
.acf-gallery-attachment img {
display: block; display: block;
height: auto; height: auto;
width: auto; width: auto;
max-width: 100%; max-width: 100%;
margin: 0 auto; margin: 0 auto;
} }
.acf-gallery-attachment .filename { .acf-gallery .acf-gallery-attachment img[src$="svg"] {
background: #f9f9f9;
}
.acf-gallery .acf-gallery-attachment .filename {
position: absolute; position: absolute;
bottom: 0; bottom: 0;
left: 0; left: 0;
right: 0; right: 0;
padding: 5%; padding: 5%;
background: #F4F4F4; background: #F4F4F4;
background: rgba(255, 255, 255, 0.8);
border-top: #DFDFDF solid 1px; border-top: #DFDFDF solid 1px;
font-weight: bold; font-weight: bold;
text-align: center; text-align: center;
word-wrap: break-word; word-wrap: break-word;
max-height: 90%; max-height: 90%;
overflow: hidden; overflow: hidden;
display: none;
} }
.acf-gallery-attachment .actions { .acf-gallery .acf-gallery-attachment .actions {
position: absolute; position: absolute;
top: 0; top: 0;
right: 0; right: 0;
} }
.acf-gallery.sidebar-open .acf-gallery-attachment .actions { .acf-gallery .acf-gallery-attachment.ui-sortable-placeholder {
display: none; visibility: visible !important;
background: #F1F1F1;
} }
/* icon */ .acf-gallery .acf-gallery-attachment.ui-sortable-placeholder .margin {
.acf-gallery-attachment.is-mime-icon .margin:before { visibility: hidden !important;
}
.acf-gallery .acf-gallery-attachment.active .margin {
box-shadow: 0 0 0 1px #FFFFFF, 0 0 0 5px #1E8CBE;
}
.acf-gallery .acf-gallery-attachment.-audio .filename,
.acf-gallery .acf-gallery-attachment.-video .filename {
display: block;
}
.acf-gallery .acf-gallery-attachment.-icon .margin:before {
content: ""; content: "";
display: block; display: block;
padding-top: 100%; padding-top: 100%;
} }
.acf-gallery-attachment.is-mime-icon .thumbnail { .acf-gallery .acf-gallery-attachment.-icon .thumbnail {
position: absolute; position: absolute;
top: 35%; top: 35%;
left: 50%; left: 50%;
max-width: 40%; max-width: 40%;
} }
.acf-gallery-attachment.is-mime-icon .thumbnail img { .acf-gallery .acf-gallery-attachment.-icon img {
margin: -50% 0 0 -50%; margin: -50% 0 0 -50%;
} }
/* toolbar */ .acf-gallery .acf-gallery-attachment.-icon .filename {
display: block;
}
html[dir="rtl"] .acf-gallery .acf-gallery-attachment {
float: right;
}
.acf-gallery.sidebar-open .acf-gallery-attachment .actions {
display: none;
}
.acf-gallery .acf-gallery-toolbar { .acf-gallery .acf-gallery-toolbar {
position: absolute; position: absolute;
right: 0; right: 0;
@ -424,10 +452,16 @@ html[dir="rtl"] .acf-flexible-content .layout .acf-fc-layout-controlls {
left: 0; left: 0;
padding: 10px; padding: 10px;
border-top: #DFDFDF solid 1px; border-top: #DFDFDF solid 1px;
background: #fff;
height: 28px;
} }
.acf-gallery .acf-gallery-toolbar .acf-hl li { .acf-gallery .acf-gallery-toolbar .acf-hl li {
line-height: 24px; line-height: 24px;
} }
.acf-gallery .acf-gallery-toolbar .bulk-actions-select {
width: auto;
margin: 0 1px 0 0;
}
.acf-gallery .acf-gallery-side { .acf-gallery .acf-gallery-side {
position: absolute; position: absolute;
top: 0; top: 0;
@ -439,18 +473,13 @@ html[dir="rtl"] .acf-flexible-content .layout .acf-fc-layout-controlls {
z-index: 1; z-index: 1;
overflow: hidden; overflow: hidden;
} }
.acf-gallery .acf-gallery-side-inner { .acf-gallery .acf-gallery-side .acf-gallery-side-inner {
position: absolute; position: absolute;
top: 0; top: 0;
left: 0; left: 0;
bottom: 0; bottom: 0;
width: 349px; width: 349px;
} }
.acf-gallery .bulk-actions-select {
width: auto;
margin: 0 1px 0 0;
}
/* side info */
.acf-gallery .acf-gallery-side-info { .acf-gallery .acf-gallery-side-info {
position: relative; position: relative;
width: 100%; width: 100%;
@ -469,11 +498,17 @@ html[dir="rtl"] .acf-flexible-content .layout .acf-fc-layout-controlls {
padding: 3px; padding: 3px;
border: #DFDFDF solid 1px; border: #DFDFDF solid 1px;
border-radius: 1px; border-radius: 1px;
/* rtl */
}
html[dir="rtl"] .acf-gallery .acf-gallery-side-info img {
float: right;
margin: 0 0 0 10px;
} }
.acf-gallery .acf-gallery-side-info p { .acf-gallery .acf-gallery-side-info p {
font-size: 13px; font-size: 13px;
line-height: 15px; line-height: 15px;
margin: 3px 0; margin: 3px 0;
word-break: break-all;
color: #999999; color: #999999;
} }
.acf-gallery .acf-gallery-side-info p strong { .acf-gallery .acf-gallery-side-info p strong {
@ -482,16 +517,15 @@ html[dir="rtl"] .acf-flexible-content .layout .acf-fc-layout-controlls {
.acf-gallery .acf-gallery-side-info a { .acf-gallery .acf-gallery-side-info a {
text-decoration: none; text-decoration: none;
} }
.acf-gallery .acf-gallery-side-info a.edit-attachment { .acf-gallery .acf-gallery-side-info a.acf-gallery-edit {
color: #21759b; color: #21759b;
} }
.acf-gallery .acf-gallery-side-info a.remove-attachment { .acf-gallery .acf-gallery-side-info a.acf-gallery-remove {
color: #bc0b0b; color: #bc0b0b;
} }
.acf-gallery .acf-gallery-side-info a:hover { .acf-gallery .acf-gallery-side-info a:hover {
text-decoration: underline; text-decoration: underline;
} }
/* side data */
.acf-gallery .acf-gallery-side-data { .acf-gallery .acf-gallery-side-data {
position: absolute; position: absolute;
top: 0; top: 0;
@ -510,11 +544,16 @@ html[dir="rtl"] .acf-flexible-content .layout .acf-fc-layout-controlls {
padding: 0 4px 8px 0 !important; padding: 0 4px 8px 0 !important;
width: auto !important; width: auto !important;
vertical-align: top; vertical-align: top;
/* rtl */
} }
.acf-gallery .acf-gallery-side-data .acf-label label, .acf-gallery .acf-gallery-side-data .acf-label label,
.acf-gallery .acf-gallery-side-data th.label label { .acf-gallery .acf-gallery-side-data th.label label {
font-weight: normal; font-weight: normal;
} }
html[dir="rtl"] .acf-gallery .acf-gallery-side-data .acf-label,
html[dir="rtl"] .acf-gallery .acf-gallery-side-data th.label {
text-align: left;
}
.acf-gallery .acf-gallery-side-data .acf-input, .acf-gallery .acf-gallery-side-data .acf-input,
.acf-gallery .acf-gallery-side-data td.field { .acf-gallery .acf-gallery-side-data td.field {
padding: 0 0 8px !important; padding: 0 0 8px !important;
@ -529,14 +568,6 @@ html[dir="rtl"] .acf-flexible-content .layout .acf-fc-layout-controlls {
.acf-gallery .acf-gallery-side-data p.help:hover { .acf-gallery .acf-gallery-side-data p.help:hover {
font-weight: normal; font-weight: normal;
} }
/* selected */
.attachment.acf-selected {
box-shadow: 0 0 0 3px #fff inset, 0 0 0 7px #1e8cbe inset !important;
}
.attachment.acf-selected .check {
display: none !important;
}
/* column widths */
.acf-gallery[data-columns="1"] .acf-gallery-attachment { .acf-gallery[data-columns="1"] .acf-gallery-attachment {
width: 100%; width: 100%;
} }
@ -561,29 +592,15 @@ html[dir="rtl"] .acf-flexible-content .layout .acf-fc-layout-controlls {
.acf-gallery[data-columns="8"] .acf-gallery-attachment { .acf-gallery[data-columns="8"] .acf-gallery-attachment {
width: 12.5%; width: 12.5%;
} }
/* column widths clear */ .acf-gallery[data-columns="2"] .acf-gallery-attachment:nth-child(2n+1),
.acf-gallery[data-columns="2"] .acf-gallery-attachment:nth-child(2n+1) { .acf-gallery[data-columns="3"] .acf-gallery-attachment:nth-child(3n+1),
clear: both; .acf-gallery[data-columns="4"] .acf-gallery-attachment:nth-child(4n+1),
} .acf-gallery[data-columns="5"] .acf-gallery-attachment:nth-child(5n+1),
.acf-gallery[data-columns="3"] .acf-gallery-attachment:nth-child(3n+1) { .acf-gallery[data-columns="6"] .acf-gallery-attachment:nth-child(6n+1),
clear: both; .acf-gallery[data-columns="7"] .acf-gallery-attachment:nth-child(7n+1),
}
.acf-gallery[data-columns="4"] .acf-gallery-attachment:nth-child(4n+1) {
clear: both;
}
.acf-gallery[data-columns="5"] .acf-gallery-attachment:nth-child(5n+1) {
clear: both;
}
.acf-gallery[data-columns="6"] .acf-gallery-attachment:nth-child(6n+1) {
clear: both;
}
.acf-gallery[data-columns="7"] .acf-gallery-attachment:nth-child(7n+1) {
clear: both;
}
.acf-gallery[data-columns="8"] .acf-gallery-attachment:nth-child(8n+1) { .acf-gallery[data-columns="8"] .acf-gallery-attachment:nth-child(8n+1) {
clear: both; clear: both;
} }
/* resizable */
.acf-gallery .ui-resizable-handle { .acf-gallery .ui-resizable-handle {
display: block; display: block;
position: absolute; position: absolute;
@ -595,11 +612,11 @@ html[dir="rtl"] .acf-flexible-content .layout .acf-fc-layout-controlls {
left: 0; left: 0;
width: 100%; width: 100%;
} }
/* rtl */ /* media modal selected */
html[dir="rtl"] .acf-gallery-attachment { .acf-media-modal .attachment.acf-selected {
float: right; box-shadow: 0 0 0 3px #fff inset, 0 0 0 7px #1e8cbe inset !important;
opacity: 0.5;
} }
html[dir="rtl"] .acf-gallery .acf-gallery-side-info img { .acf-media-modal .attachment.acf-selected .check {
float: right; display: none !important;
margin: 0 0 0 10px;
} }

File diff suppressed because it is too large Load Diff

File diff suppressed because one or more lines are too long

View File

@ -110,27 +110,23 @@ class acf_pro_updates {
// bail early if no show_updates // bail early if no show_updates
if( !acf_get_setting('show_updates') ) { if( !acf_get_setting('show_updates') ) return $transient;
// ensure is_plugin_active() exists (not on frontend)
if( !function_exists('is_plugin_active') ) {
return $transient; include_once( ABSPATH . 'wp-admin/includes/plugin.php' );
} }
// bail early if not a plugin (included in theme) // bail early if not a plugin (included in theme)
if( !is_plugin_active($basename) ) { if( !is_plugin_active($basename) ) return $transient;
return $transient;
}
// bail early if no update available // bail early if no update available
if( !acf_pro_is_update_available() ) { if( !acf_pro_is_update_available() ) return $transient;
return $transient;
}
// vars // vars
@ -195,11 +191,11 @@ class acf_pro_updates {
// vars // vars
$m = __('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>', 'acf'); $m = __('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>.', 'acf');
// show message // show message
echo '<br />' . sprintf( $m, admin_url('edit.php?post_type=acf-field-group&page=acf-settings-updates'), 'http://www.advancedcustomfields.com/pro'); echo '<br />' . sprintf( $m, admin_url('edit.php?post_type=acf-field-group&page=acf-settings-updates'), 'https://www.advancedcustomfields.com/pro');
} }

View File

@ -339,7 +339,7 @@ class acf_field_flexible_content extends acf_field {
<?php acf_hidden_input(array( 'name' => "{$field['name']}[{$i}][acf_fc_layout]", 'value' => $layout['name'] )); ?> <?php acf_hidden_input(array( 'name' => "{$field['name']}[{$i}][acf_fc_layout]", 'value' => $layout['name'] )); ?>
</div> </div>
<div class="acf-fc-layout-handle"><?php echo $title; ?></div> <div class="acf-fc-layout-handle" title="<?php _e('Drag to reorder','acf'); ?>"><?php echo $title; ?></div>
<ul class="acf-fc-layout-controlls acf-hl"> <ul class="acf-fc-layout-controlls acf-hl">
<li class="acf-fc-show-on-hover"> <li class="acf-fc-show-on-hover">
@ -781,11 +781,7 @@ class acf_field_flexible_content extends acf_field {
// bail early if layout deosnt exist // bail early if layout deosnt exist
if( empty($layouts[ $l ]) ) { if( empty($layouts[ $l ]) ) continue;
continue;
}
// get layout // get layout
@ -799,6 +795,10 @@ class acf_field_flexible_content extends acf_field {
$sub_field = $layout[ $j ]; $sub_field = $layout[ $j ];
// update $sub_field name
$sub_field['name'] = "{$field['name']}_{$i}_{$sub_field['name']}";
// extract value // extract value
$sub_value = acf_extract_var( $value[ $i ], $sub_field['key'] ); $sub_value = acf_extract_var( $value[ $i ], $sub_field['key'] );
@ -808,7 +808,7 @@ class acf_field_flexible_content extends acf_field {
// append to $row // append to $row
$value[ $i ][ $sub_field['name'] ] = $sub_value; $value[ $i ][ $sub_field['_name'] ] = $sub_value;
} }
@ -1065,6 +1065,66 @@ class acf_field_flexible_content extends acf_field {
// return // return
return $order; return $order;
}
/*
* delete_value
*
* description
*
* @type function
* @date 1/07/2015
* @since 5.2.3
*
* @param $post_id (int)
* @return $post_id (int)
*/
function delete_value( $post_id, $key, $field ) {
// get old value (db only)
$old_order = acf_get_metadata( $post_id, $field['name'] );
// bail early if no rows or no sub fields
if( empty($old_order) ) return;
// vars
$layouts = array();
// populate $layouts
foreach( $field['layouts'] as $layout ) {
$layouts[ $layout['name'] ] = $layout['sub_fields'];
}
// loop
foreach( $old_order as $i => $l ) {
// bail early if no layout
if( empty($layouts[ $l ]) ) continue;
// loop through sub fields
foreach( $layouts[ $l ] as $sub_field ) {
// modify name for delete
$sub_field['name'] = "{$key}_{$i}_{$sub_field['name']}";
// delete value
acf_delete_value( $post_id, $sub_field );
}
}
} }
@ -1293,14 +1353,19 @@ class acf_field_flexible_content extends acf_field {
function get_layout_title( $field, $layout, $i, $value ) { function get_layout_title( $field, $layout, $i, $value ) {
// vars
$rows = array();
$rows[ $i ] = $value;
// add loop // add loop
acf_add_loop(array( acf_add_loop(array(
'selector' => $field['name'], 'selector' => $field['name'],
'name' => $field['name'], 'name' => $field['name'],
'value' => array( $value ), 'value' => $rows,
'field' => $field, 'field' => $field,
'i' => 0, 'i' => $i,
'post_id' => 0, 'post_id' => 0,
)); ));

View File

@ -46,7 +46,8 @@ class acf_field_gallery extends acf_field {
'max_width' => 0, 'max_width' => 0,
'max_height' => 0, 'max_height' => 0,
'max_size' => 0, 'max_size' => 0,
'mime_types' => '' 'mime_types' => '',
'insert' => 'append'
); );
$this->l10n = array( $this->l10n = array(
'select' => __("Add Image to Gallery",'acf'), 'select' => __("Add Image to Gallery",'acf'),
@ -91,35 +92,28 @@ class acf_field_gallery extends acf_field {
// options // options
$options = acf_parse_args( $_POST, array( $options = acf_parse_args( $_POST, array(
'post_id' => 0, 'post_id' => 0,
'id' => 0, 'attachment' => 0,
'field_key' => '', 'id' => 0,
'nonce' => '', 'field_key' => '',
'nonce' => '',
)); ));
// validate // validate
if( ! wp_verify_nonce($options['nonce'], 'acf_nonce') ) { if( !wp_verify_nonce($options['nonce'], 'acf_nonce') ) die();
die();
}
if( empty($options['id']) ) {
die(); // bail early if no id
if( !$options['id'] ) die();
}
// load field // load field
$field = acf_get_field( $options['field_key'] ); $field = acf_get_field( $options['field_key'] );
if( !$field ) {
die(); // bali early if no field
if( !$field ) die();
}
// render // render
@ -306,9 +300,10 @@ class acf_field_gallery extends acf_field {
// vars // vars
$attachment = wp_prepare_attachment_for_js( $id ); $attachment = wp_prepare_attachment_for_js( $id );
$thumb = '';
$prefix = "attachments[{$id}]";
$compat = get_compat_media_markup( $id ); $compat = get_compat_media_markup( $id );
$compat = $compat['item'];
$prefix = 'attachments[' . $id . ']';
$thumb = '';
$dimentions = ''; $dimentions = '';
@ -331,12 +326,11 @@ class acf_field_gallery extends acf_field {
} else { } else {
// fallback (perhaps attachment does not exist) // fallback (perhaps attachment does not exist)
$thumb = $attachment['icon']; $thumb = wp_mime_type_icon();
} }
// dimentions // dimentions
if( $attachment['type'] === 'audio' ) { if( $attachment['type'] === 'audio' ) {
@ -348,7 +342,7 @@ class acf_field_gallery extends acf_field {
} }
if( $attachment['filesizeHumanReadable'] ) { if( !empty($attachment['filesizeHumanReadable']) ) {
$dimentions .= ' (' . $attachment['filesizeHumanReadable'] . ')'; $dimentions .= ' (' . $attachment['filesizeHumanReadable'] . ')';
@ -360,7 +354,10 @@ class acf_field_gallery extends acf_field {
<p class="filename"><strong><?php echo $attachment['filename']; ?></strong></p> <p class="filename"><strong><?php echo $attachment['filename']; ?></strong></p>
<p class="uploaded"><?php echo $attachment['dateFormatted']; ?></p> <p class="uploaded"><?php echo $attachment['dateFormatted']; ?></p>
<p class="dimensions"><?php echo $dimentions; ?></p> <p class="dimensions"><?php echo $dimentions; ?></p>
<p class="actions"><a href="#" class="edit-attachment" data-id="<?php echo $id; ?>"><?php _e('Edit', 'acf'); ?></a> <a href="#" class="remove-attachment" data-id="<?php echo $id; ?>"><?php _e('Remove', 'acf'); ?></a></p> <p class="actions">
<a href="#" class="acf-gallery-edit" data-id="<?php echo $id; ?>"><?php _e('Edit', 'acf'); ?></a>
<a href="#" class="acf-gallery-remove" data-id="<?php echo $id; ?>"><?php _e('Remove', 'acf'); ?></a>
</p>
</div> </div>
<table class="form-table"> <table class="form-table">
<tbody> <tbody>
@ -405,10 +402,46 @@ class acf_field_gallery extends acf_field {
?> ?>
</tbody> </tbody>
</table> </table>
<?php echo $compat['item']; ?>
<?php <?php
echo $compat;
}
/*
* get_attachments
*
* This function will return an array of attachments for a given field value
*
* @type function
* @date 13/06/2014
* @since 5.0.0
*
* @param $value (array)
* @return $value
*/
function get_attachments( $value ) {
// bail early if no value
if( empty($value) ) return false;
// force value to array
$post__in = acf_get_array( $value );
// get posts
$posts = acf_get_posts(array(
'post_type' => 'attachment',
'post__in' => $post__in
));
// return
return $posts;
} }
@ -431,7 +464,6 @@ class acf_field_gallery extends acf_field {
// vars // vars
$posts = array();
$atts = array( $atts = array(
'id' => $field['id'], 'id' => $field['id'],
'class' => "acf-gallery {$field['class']}", 'class' => "acf-gallery {$field['class']}",
@ -440,6 +472,8 @@ class acf_field_gallery extends acf_field {
'data-min' => $field['min'], 'data-min' => $field['min'],
'data-max' => $field['max'], 'data-max' => $field['max'],
'data-mime_types' => $field['mime_types'], 'data-mime_types' => $field['mime_types'],
'data-insert' => $field['insert'],
'data-columns' => 4
); );
@ -449,83 +483,63 @@ class acf_field_gallery extends acf_field {
$atts['style'] = "height:{$height}px"; $atts['style'] = "height:{$height}px";
// load posts // get posts
if( !empty($field['value']) ) { $value = $this->get_attachments( $field['value'] );
$posts = acf_get_posts(array(
'post_type' => 'attachment',
'post__in' => $field['value']
));
}
?> ?>
<div <?php acf_esc_attr_e($atts); ?>> <div <?php acf_esc_attr_e($atts); ?>>
<div class="acf-hidden"> <div class="acf-hidden">
<input type="hidden" <?php acf_esc_attr_e(array( 'name' => $field['name'], 'value' => '', 'data-name' => 'ids' )); ?> /> <?php acf_hidden_input(array( 'name' => $field['name'], 'value' => '' )); ?>
</div> </div>
<div class="acf-gallery-main"> <div class="acf-gallery-main">
<div class="acf-gallery-attachments"> <div class="acf-gallery-attachments">
<?php if( !empty($posts) ): ?> <?php if( $value ): ?>
<?php foreach( $posts as $post ): <?php foreach( $value as $i => $v ):
// bail early if no value
if( !$v ) continue;
// vars // vars
$type = acf_maybe_get(explode('/', $post->post_mime_type), 0); $a = array(
$thumb_id = $post->ID; 'ID' => $v->ID,
$thumb_url = ''; 'title' => $v->post_title,
$thumb_class = 'acf-gallery-attachment acf-soh'; 'filename' => wp_basename($v->guid),
$filename = wp_basename($post->guid); 'type' => acf_maybe_get(explode('/', $v->post_mime_type), 0),
'class' => 'acf-gallery-attachment acf-soh'
);
// thumb // thumbnail
if( $type === 'image' || $type === 'audio' || $type === 'video' ) { $thumbnail = acf_get_post_thumbnail($a['ID'], $field['preview_size']);
// icon
$a['class'] .= ' -' . $a['type'];
if( $thumbnail['type'] == 'icon' ) {
// change $thumb_id $a['class'] .= ' -icon';
if( $type === 'audio' || $type === 'video' ) {
$thumb_id = get_post_thumbnail_id( $post->ID );
}
// get attachment
if( $thumb_id ) {
$thumb_url = wp_get_attachment_image_src( $thumb_id, $field['preview_size'] );
$thumb_url = acf_maybe_get( $thumb_url, 0 );
}
} }
// fallback
if( !$thumb_url ) {
$thumb_url = wp_mime_type_icon( $post->ID );
$thumb_class .= ' is-mime-icon';
}
?> ?>
<div class="<?php echo $thumb_class; ?>" data-id="<?php echo $post->ID; ?>"> <div class="<?php echo $a['class']; ?>" data-id="<?php echo $a['ID']; ?>">
<input type="hidden" name="<?php echo $field['name']; ?>[]" value="<?php echo $post->ID; ?>" /> <?php acf_hidden_input(array( 'name' => $field['name'].'[]', 'value' => $a['ID'] )); ?>
<div class="margin" title="<?php echo $filename; ?>"> <div class="margin">
<div class="thumbnail"> <div class="thumbnail">
<img src="<?php echo $thumb_url; ?>"/> <img src="<?php echo $thumbnail['url']; ?>" alt="" title="<?php echo $a['title']; ?>"/>
</div> </div>
<?php if( $type !== 'image' ): ?> <div class="filename"><?php echo acf_get_truncated($a['filename'], 30); ?></div>
<div class="filename"><?php echo acf_get_truncated($filename, 18); ?></div>
<?php endif; ?>
</div> </div>
<div class="actions acf-soh-target"> <div class="actions acf-soh-target">
<a class="acf-icon -cancel dark remove-attachment" data-id="<?php echo $post->ID; ?>" href="#"></a> <a class="acf-icon -cancel dark acf-gallery-remove" href="#" data-id="<?php echo $a['ID']; ?>" title="<?php _e('Remove', 'acf'); ?>"></a>
</div> </div>
</div> </div>
@ -540,10 +554,10 @@ class acf_field_gallery extends acf_field {
<ul class="acf-hl"> <ul class="acf-hl">
<li> <li>
<a href="#" class="acf-button button button-primary add-attachment"><?php _e('Add to gallery', 'acf'); ?></a> <a href="#" class="acf-button button button-primary acf-gallery-add"><?php _e('Add to gallery', 'acf'); ?></a>
</li> </li>
<li class="acf-fr"> <li class="acf-fr">
<select class="bulk-actions"> <select class="acf-gallery-sort">
<option value=""><?php _e('Bulk actions', 'acf'); ?></option> <option value=""><?php _e('Bulk actions', 'acf'); ?></option>
<option value="date"><?php _e('Sort by date uploaded', 'acf'); ?></option> <option value="date"><?php _e('Sort by date uploaded', 'acf'); ?></option>
<option value="modified"><?php _e('Sort by date modified', 'acf'); ?></option> <option value="modified"><?php _e('Sort by date modified', 'acf'); ?></option>
@ -566,10 +580,10 @@ class acf_field_gallery extends acf_field {
<ul class="acf-hl"> <ul class="acf-hl">
<li> <li>
<a href="#" class="acf-button button close-sidebar"><?php _e('Close', 'acf'); ?></a> <a href="#" class="acf-button button acf-gallery-close"><?php _e('Close', 'acf'); ?></a>
</li> </li>
<li class="acf-fr"> <li class="acf-fr">
<a class="acf-button button button-primary update-attachment"><?php _e('Update', 'acf'); ?></a> <a class="acf-button button button-primary acf-gallery-update"><?php _e('Update', 'acf'); ?></a>
</li> </li>
</ul> </ul>
@ -613,11 +627,7 @@ class acf_field_gallery extends acf_field {
foreach( $clear as $k ) { foreach( $clear as $k ) {
if( empty($field[$k]) ) { if( empty($field[$k]) ) $field[$k] = '';
$field[$k] = '';
}
} }
@ -650,6 +660,19 @@ class acf_field_gallery extends acf_field {
)); ));
// insert
acf_render_field_setting( $field, array(
'label' => __('Insert','acf'),
'instructions' => __('Specify where new attachments are added','acf'),
'type' => 'select',
'name' => 'insert',
'choices' => array(
'append' => __('Append to the end', 'acf'),
'prepend' => __('Prepend to the beginning', 'acf')
)
));
// library // library
acf_render_field_setting( $field, array( acf_render_field_setting( $field, array(
'label' => __('Library','acf'), 'label' => __('Library','acf'),
@ -760,20 +783,11 @@ class acf_field_gallery extends acf_field {
function format_value( $value, $post_id, $field ) { function format_value( $value, $post_id, $field ) {
// bail early if no value // bail early if no value
if( empty($value) ) { if( empty($value) ) return false;
// return false as $value may be '' (from DB) which doesn't make much sense
return false;
}
// get posts // get posts
$posts = acf_get_posts(array( $posts = $this->get_attachments($value);
'post_type' => 'attachment',
'post__in' => $value,
));
// update value to include $post // update value to include $post
@ -823,6 +837,78 @@ class acf_field_gallery extends acf_field {
return $valid; return $valid;
} }
/*
* update_value()
*
* This filter is appied to the $value before it is updated in the db
*
* @type filter
* @since 3.6
* @date 23/01/13
*
* @param $value - the value which will be saved in the database
* @param $post_id - the $post_id of which the value will be saved
* @param $field - the field array holding all the field options
*
* @return $value - the modified value
*/
function update_value( $value, $post_id, $field ) {
// bail early if no value
if( empty($value) || !is_array($value) ) return false;
// loop
foreach( $value as $i => $v ) {
$value[ $i ] = $this->update_single_value( $v );
}
// return
return $value;
}
/*
* update_single_value()
*
* This filter is appied to the $value before it is updated in the db
*
* @type filter
* @since 3.6
* @date 23/01/13
*
* @param $value - the value which will be saved in the database
* @param $post_id - the $post_id of which the value will be saved
* @param $field - the field array holding all the field options
*
* @return $value - the modified value
*/
function update_single_value( $value ) {
// numeric
if( is_numeric($value) ) return $value;
// array?
if( is_array($value) && isset($value['ID']) ) return $value['ID'];
// object?
if( is_object($value) && isset($value->ID) ) return $value->ID;
// return
return $value;
}
} }

View File

@ -594,6 +594,10 @@ class acf_field_repeater extends acf_field {
$sub_field = $field['sub_fields'][ $j ]; $sub_field = $field['sub_fields'][ $j ];
// update $sub_field name
$sub_field['name'] = "{$field['name']}_{$i}_{$sub_field['name']}";
// extract value // extract value
$sub_value = acf_extract_var( $value[ $i ], $sub_field['key'] ); $sub_value = acf_extract_var( $value[ $i ], $sub_field['key'] );
@ -603,7 +607,7 @@ class acf_field_repeater extends acf_field {
// append to $row // append to $row
$value[ $i ][ $sub_field['name'] ] = $sub_value; $value[ $i ][ $sub_field['_name'] ] = $sub_value;
} }

View File

@ -2,7 +2,7 @@
Contributors: elliotcondon Contributors: elliotcondon
Tags: acf, advanced, custom, field, fields, custom field, custom fields, simple fields, magic fields, more fields, repeater, edit Tags: acf, advanced, custom, field, fields, custom field, custom fields, simple fields, magic fields, more fields, repeater, edit
Requires at least: 3.6.0 Requires at least: 3.6.0
Tested up to: 4.4.0 Tested up to: 4.5.2
License: GPLv2 or later License: GPLv2 or later
License URI: http://www.gnu.org/licenses/gpl-2.0.html License URI: http://www.gnu.org/licenses/gpl-2.0.html
@ -45,7 +45,7 @@ Advanced Custom Fields is the perfect solution for any WordPress website which n
* Repeater (ability to create repeatable blocks of fields!) * Repeater (ability to create repeatable blocks of fields!)
* Flexible Content (ability to create flexible blocks of fields!) * Flexible Content (ability to create flexible blocks of fields!)
* Gallery (Add, edit and order multiple images in 1 simple field) * Gallery (Add, edit and order multiple images in 1 simple field)
* [Custom](http://www.advancedcustomfields.com/resources/tutorials/creating-a-new-field-type/) (Create your own field type!) * [Custom](https://www.advancedcustomfields.com/resources/tutorials/creating-a-new-field-type/) (Create your own field type!)
= Tested on = = Tested on =
* Mac Firefox :) * Mac Firefox :)
@ -59,16 +59,16 @@ Advanced Custom Fields is the perfect solution for any WordPress website which n
* PC ie7 :S * PC ie7 :S
= Website = = Website =
http://www.advancedcustomfields.com/ https://www.advancedcustomfields.com/
= Documentation = = Documentation =
* [Getting Started](http://www.advancedcustomfields.com/resources/#getting-started) * [Getting Started](https://www.advancedcustomfields.com/resources/#getting-started)
* [Field Types](http://www.advancedcustomfields.com/resources/#field-types) * [Field Types](https://www.advancedcustomfields.com/resources/#field-types)
* [Functions](http://www.advancedcustomfields.com/resources/#functions) * [Functions](https://www.advancedcustomfields.com/resources/#functions)
* [Actions](http://www.advancedcustomfields.com/resources/#actions) * [Actions](https://www.advancedcustomfields.com/resources/#actions)
* [Filters](http://www.advancedcustomfields.com/resources/#filters) * [Filters](https://www.advancedcustomfields.com/resources/#filters)
* [How to guides](http://www.advancedcustomfields.com/resources/#how-to) * [How to guides](https://www.advancedcustomfields.com/resources/#how-to)
* [Tutorials](http://www.advancedcustomfields.com/resources/#tutorials) * [Tutorials](https://www.advancedcustomfields.com/resources/#tutorials)
= Bug Submission and Forum Support = = Bug Submission and Forum Support =
http://support.advancedcustomfields.com/ http://support.advancedcustomfields.com/
@ -101,11 +101,35 @@ http://support.advancedcustomfields.com/
3. The Page edit screen after creating the Advanced Custom Fields 3. The Page edit screen after creating the Advanced Custom Fields
4. Simple and intuitive API. Read the documentation at: http://www.advancedcustomfields.com/resources/ 4. Simple and intuitive API. Read the documentation at: https://www.advancedcustomfields.com/resources/
== Changelog == == Changelog ==
= 5.3.8.1 =
* Image field: Fixed JS bug causing errors when 'Uploaded to post' library setting is checked
* File field: Same as above
* Gallery field: Same as above
* Flexible Content field: Fixed bug preventing `get_sub_field()` from working within 'layout_title' filter
* Radio field: Fixed bug causing field name to change when adding 'other' choice to a sub field
= 5.3.8 =
* Gallery field: Added new 'Insert' setting to control where new attachments are added
* Radio field: Added new 'Allow Null' setting
* Relationship field: Added attachment mime type icons when no thumbnail is available
* Core: Fixed bug causing customizer preview values from loading on newly added widgets
* Core: Improved attachments location rule for future compatibility with specific mime types
* Core: Fixed bug causing select2 to appear blank after duplicating a field setting
* Core: Fixed bug causing PHP error on front-end plugin update check
* Core: Updated title elements (h1, h2, h3) to match WP 4.5
* Core: Minor fixes and improvements
* Core: Fixed bug where comment fields appeared in different locations for logged in/out users
* Language: Updated Polish translation - thanks to Michal Lepiarz
* Language: Updated Italian translation - thanks to Davide Pantè
* Language: Updated Portuguese translation - thanks to Pedro Mendonca
* Language: Updated Swiss German translation - thanks to Raphael Hüni
* Language: Updated French Translation - thanks to Maxime Bernard-Jacquet
= 5.3.7 = = 5.3.7 =
* Options page: Added new 'update_button' setting to modify update button text * Options page: Added new 'update_button' setting to modify update button text
* Options page: Added columns support (Screen Options) * Options page: Added columns support (Screen Options)
@ -356,7 +380,7 @@ http://support.advancedcustomfields.com/
* Gallery field: Same as above * Gallery field: Same as above
* Message field: Added new `esc_html` setting to show HTML as plain text * Message field: Added new `esc_html` setting to show HTML as plain text
* Core: Fixed customizer issues when editing widgets * Core: Fixed customizer issues when editing widgets
* Core: Added new filter to validate upload - http://www.advancedcustomfields.com/resources/acfupload_prefilter/ * Core: Added new filter to validate upload - https://www.advancedcustomfields.com/resources/acfupload_prefilter/
* Core: Added file types (new field setting) to media popup select filter * Core: Added file types (new field setting) to media popup select filter
* Core: Added an edit field group link to metabox titles * Core: Added an edit field group link to metabox titles
* Core: Added new `capability` setting for use in admin pages / CPT * Core: Added new `capability` setting for use in admin pages / CPT
@ -386,7 +410,7 @@ http://support.advancedcustomfields.com/
* Core: Fixed many field bugs in WP media grid popup * Core: Fixed many field bugs in WP media grid popup
* Core: Added new friendly field wrap classes: acf-field-{$type} acf-field-{$key} * Core: Added new friendly field wrap classes: acf-field-{$type} acf-field-{$key}
* Core: JS speed improvements due to new field wrap classes * Core: JS speed improvements due to new field wrap classes
* Core: Added new filter for removing compatibility http://www.advancedcustomfields.com/resources/acfcompatibility/ * Core: Added new filter for removing compatibility https://www.advancedcustomfields.com/resources/acfcompatibility/
* Core: Minor fixes and improvements * Core: Minor fixes and improvements
* Language: Updated German translation - thanks to Thomas Meyer * Language: Updated German translation - thanks to Thomas Meyer
@ -788,7 +812,7 @@ http://support.advancedcustomfields.com/
* [Fixed] Test / Fix field group duplication in WooCommerce category w SEO plugin - http://support.advancedcustomfields.com/discussion/5440/acf-woocommerce-product-category-taxonomy-bug * [Fixed] Test / Fix field group duplication in WooCommerce category w SEO plugin - http://support.advancedcustomfields.com/discussion/5440/acf-woocommerce-product-category-taxonomy-bug
= 4.0.0 = = 4.0.0 =
* [IMPORTANT] This update contains major changes to premium and custom field type Add-ons. Please read the [Migrating from v3 to v4 guide](http://www.advancedcustomfields.com/resources/getting-started/migrating-from-v3-to-v4/) * [IMPORTANT] This update contains major changes to premium and custom field type Add-ons. Please read the [Migrating from v3 to v4 guide](https://www.advancedcustomfields.com/resources/getting-started/migrating-from-v3-to-v4/)
* [Optimized] Optimize performance by removing heavy class structure and implementing light weight hooks & filters! * [Optimized] Optimize performance by removing heavy class structure and implementing light weight hooks & filters!
* [Changed] Remove all Add-on code from the core plugin and separate into individual plugins with self hosted updates * [Changed] Remove all Add-on code from the core plugin and separate into individual plugins with self hosted updates
* [Added] Add field 'Taxonomy' * [Added] Add field 'Taxonomy'
@ -877,7 +901,7 @@ http://support.advancedcustomfields.com/
* [Fixed] Fix bug preventing options pages from appearing in the field group's location rules * [Fixed] Fix bug preventing options pages from appearing in the field group's location rules
= 3.5.4 = = 3.5.4 =
* [Added] Add new filter for ACF settings - http://www.advancedcustomfields.com/docs/filters/acf_settings/ * [Added] Add new filter for ACF settings - https://www.advancedcustomfields.com/docs/filters/acf_settings/
* [Updated] Updated field keys to look nicer. eg field_12 * [Updated] Updated field keys to look nicer. eg field_12
* [Added] Update admin_head to use hooks / enque all scripts / styles * [Added] Update admin_head to use hooks / enque all scripts / styles
* [Added] Add duplicate function for flexible content layouts * [Added] Add duplicate function for flexible content layouts
@ -1054,47 +1078,47 @@ http://support.advancedcustomfields.com/
* [Added] Add new Czech translation - Thanks to Webees ( http://www.webees.cz/ ) * [Added] Add new Czech translation - Thanks to Webees ( http://www.webees.cz/ )
= 3.2.8 = = 3.2.8 =
* [Added] Repeater - Add option for min rows + max rows - http://www.advancedcustomfields.com/support/discussion/2111/repeater-empty-conditional-statements#Item_4 * [Added] Repeater - Add option for min rows + max rows - https://www.advancedcustomfields.com/support/discussion/2111/repeater-empty-conditional-statements#Item_4
* [Fixed] Test / Fix Chrome Double WYSIWYG. Again... * [Fixed] Test / Fix Chrome Double WYSIWYG. Again...
* [Added] Add "future" to post status options - http://advancedcustomfields.com/support/discussion/1975/changed-line-81-and-94-of-corefieldspost_object-to-show-future-entries * [Added] Add "future" to post status options - http://advancedcustomfields.com/support/discussion/1975/changed-line-81-and-94-of-corefieldspost_object-to-show-future-entries
* [Added] Make image sizes strings "Pretty" for preview size options * [Added] Make image sizes strings "Pretty" for preview size options
* [Fixed] Test / Fix WYSIWYG insert image inside a repeater bug - http://www.advancedcustomfields.com/support/discussion/2404/problem-with-repeater-wysiwyg-fields-and-images * [Fixed] Test / Fix WYSIWYG insert image inside a repeater bug - https://www.advancedcustomfields.com/support/discussion/2404/problem-with-repeater-wysiwyg-fields-and-images
= 3.2.7 = = 3.2.7 =
* [Fixed] Rename controller classes - http://www.advancedcustomfields.com/support/discussion/2363/fatal-error-after-update-to-3.2.6 * [Fixed] Rename controller classes - https://www.advancedcustomfields.com/support/discussion/2363/fatal-error-after-update-to-3.2.6
* [Added] Add edit button to image / file fields * [Added] Add edit button to image / file fields
* [Fixed] WYSIWYG toolbar buttons dissapearing in HTML tab mode * [Fixed] WYSIWYG toolbar buttons dissapearing in HTML tab mode
= 3.2.6 = = 3.2.6 =
* [Fixed] Fix flexible content inside repeater add extra row jquery bug - http://www.advancedcustomfields.com/support/discussion/2134/add-flexible-content-button-in-repeater-field-adds-new-repeater-row * [Fixed] Fix flexible content inside repeater add extra row jquery bug - https://www.advancedcustomfields.com/support/discussion/2134/add-flexible-content-button-in-repeater-field-adds-new-repeater-row
* [Added] Add suppress_filters to relationship field for WPML compatibility - http://www.advancedcustomfields.com/support/discussion/comment/5401#Comment_5401 * [Added] Add suppress_filters to relationship field for WPML compatibility - https://www.advancedcustomfields.com/support/discussion/comment/5401#Comment_5401
* [Added] Add new German translation - http://www.advancedcustomfields.com/support/discussion/2197/german-translation * [Added] Add new German translation - https://www.advancedcustomfields.com/support/discussion/2197/german-translation
* [Added] Add new Italian translation - Alessandro Mignogna (www.asernet.it) * [Added] Add new Italian translation - Alessandro Mignogna (www.asernet.it)
* [Added] Add new Japanese translation - http://www.advancedcustomfields.com/support/discussion/2219/japanese-translation * [Added] Add new Japanese translation - https://www.advancedcustomfields.com/support/discussion/2219/japanese-translation
* [Fixed] Test / Fix WYSIWYG removing p tags - http://www.advancedcustomfields.com/support/discussion/comment/5482#Comment_5482 * [Fixed] Test / Fix WYSIWYG removing p tags - https://www.advancedcustomfields.com/support/discussion/comment/5482#Comment_5482
* [Added] edit basic toolbar buttons to match WP teeny mode - WYSIWYG * [Added] edit basic toolbar buttons to match WP teeny mode - WYSIWYG
* [Fixed] Test front end form hiding - http://www.advancedcustomfields.com/support/discussion/2226/frontend-form-disppears-on-acf-3.2.5 * [Fixed] Test front end form hiding - https://www.advancedcustomfields.com/support/discussion/2226/frontend-form-disppears-on-acf-3.2.5
* [Fixed] Test saving user custom fields - http://www.advancedcustomfields.com/support/discussion/2231/custom-fields-not-saving-data-on-initial-user-registration * [Fixed] Test saving user custom fields - https://www.advancedcustomfields.com/support/discussion/2231/custom-fields-not-saving-data-on-initial-user-registration
* [Fixed] Fix options page translation bug - http://www.advancedcustomfields.com/support/discussion/2098/change-language-and-options-page-fields-disappear * [Fixed] Fix options page translation bug - https://www.advancedcustomfields.com/support/discussion/2098/change-language-and-options-page-fields-disappear
* [Fixed] Pages rule not returning private pages - http://www.advancedcustomfields.com/support/discussion/2275/attach-field-group-to-privately-published-pages * [Fixed] Pages rule not returning private pages - https://www.advancedcustomfields.com/support/discussion/2275/attach-field-group-to-privately-published-pages
* [Added] Add custom add_image_size() Image field preview sizes - http://www.advancedcustomfields.com/support/discussion/comment/5800#Comment_5800 * [Added] Add custom add_image_size() Image field preview sizes - https://www.advancedcustomfields.com/support/discussion/comment/5800#Comment_5800
= 3.2.5 = = 3.2.5 =
* [IMPORTANT] Change field group option "Show on page" to "Hide on Screen" to allow for future proof adding new elements to list. Previously exported and registered field groups via PHP will still work as expected! This change will prompt you for a database upgrade. * [IMPORTANT] Change field group option "Show on page" to "Hide on Screen" to allow for future proof adding new elements to list. Previously exported and registered field groups via PHP will still work as expected! This change will prompt you for a database upgrade.
* [Added] Add in edit button to upload image / file thickbox * [Added] Add in edit button to upload image / file thickbox
* [Improved] Changed loading default values. Now behaves as expected! * [Improved] Changed loading default values. Now behaves as expected!
* [Fixed] Test / Fix full screen mode dissapearing from editor - http://www.advancedcustomfields.com/support/discussion/2124/full-screen-button-for-zen-mode-is-gone * [Fixed] Test / Fix full screen mode dissapearing from editor - https://www.advancedcustomfields.com/support/discussion/2124/full-screen-button-for-zen-mode-is-gone
* [Fixed] get_field returning false for 0 - http://advancedcustomfields.com/support/discussion/2115/get_field-returns-false-if-field-has-value-0 * [Fixed] get_field returning false for 0 - http://advancedcustomfields.com/support/discussion/2115/get_field-returns-false-if-field-has-value-0
* [Improved] Improve relationship sortable code with item param - http://www.advancedcustomfields.com/support/discussion/comment/3536#Comment_3536 * [Improved] Improve relationship sortable code with item param - https://www.advancedcustomfields.com/support/discussion/comment/3536#Comment_3536
* [Fixed] IE category js bug - http://www.advancedcustomfields.com/support/discussion/2127/ie-78-category-checkbox-bug * [Fixed] IE category js bug - https://www.advancedcustomfields.com/support/discussion/2127/ie-78-category-checkbox-bug
* [Fixed] Flexible content field row css bug - http://www.advancedcustomfields.com/support/discussion/2126/space-between-fields-is-a-little-tight-in-3.2.33.2.4 * [Fixed] Flexible content field row css bug - https://www.advancedcustomfields.com/support/discussion/2126/space-between-fields-is-a-little-tight-in-3.2.33.2.4
* [Fixed] Repeater row limit in flexible field bug - http://www.advancedcustomfields.com/support/discussion/1635/repeater-with-row-limit-of-1-inside-flexible-field-no-rows-show * [Fixed] Repeater row limit in flexible field bug - https://www.advancedcustomfields.com/support/discussion/1635/repeater-with-row-limit-of-1-inside-flexible-field-no-rows-show
* [Fixed] Fix update message - appears on first activation * [Fixed] Fix update message - appears on first activation
* [Fixed] Fix options page sidebar drag area - no border needed * [Fixed] Fix options page sidebar drag area - no border needed
* [Fixed] Fix export options page activation - http://www.advancedcustomfields.com/support/discussion/2112/options-page-not-working-in-functions.php * [Fixed] Fix export options page activation - https://www.advancedcustomfields.com/support/discussion/2112/options-page-not-working-in-functions.php
= 3.2.4 = = 3.2.4 =
* [Fixed] Remove translation from validation class - http://www.advancedcustomfields.com/support/discussion/2110/custom-validation-broken-in-other-languages * [Fixed] Remove translation from validation class - https://www.advancedcustomfields.com/support/discussion/2110/custom-validation-broken-in-other-languages
* [Fixed] Test fix WYSIWYG insert media issues * [Fixed] Test fix WYSIWYG insert media issues
* [Added] Add Excerpt to the field group "show on page" options * [Added] Add Excerpt to the field group "show on page" options
@ -1103,14 +1127,14 @@ http://support.advancedcustomfields.com/
* [Fixed] Wysiwyg in repeater not working * [Fixed] Wysiwyg in repeater not working
* [Fixed] Remove Swedish translation until string / js bugs are fixed * [Fixed] Remove Swedish translation until string / js bugs are fixed
* [Fixed] Checkbox array value issue: http://wordpress.org/support/topic/plugin-advanced-custom-fields-php-warning-in-corefieldscheckboxphp?replies=6 * [Fixed] Checkbox array value issue: http://wordpress.org/support/topic/plugin-advanced-custom-fields-php-warning-in-corefieldscheckboxphp?replies=6
* [Added] Add inherit to relationship posts query - http://www.advancedcustomfields.com/support/discussion/comment/3826#Comment_3826 * [Added] Add inherit to relationship posts query - https://www.advancedcustomfields.com/support/discussion/comment/3826#Comment_3826
* [Fixed] Relationship shows deleted posts - http://www.advancedcustomfields.com/support/discussion/2080/strange-behavior-of-relationship-field-trash-posts * [Fixed] Relationship shows deleted posts - https://www.advancedcustomfields.com/support/discussion/2080/strange-behavior-of-relationship-field-trash-posts
* [Fixed] Wysiwyg editor not working on taxonomy edit page * [Fixed] Wysiwyg editor not working on taxonomy edit page
= 3.2.2 = = 3.2.2 =
* [Fixed] Fix layout bug: Nested repeaters of different layouts * [Fixed] Fix layout bug: Nested repeaters of different layouts
* [Fixed] Fix strip slashes bug * [Fixed] Fix strip slashes bug
* [Fixed] Fix nested repeater bug - http://www.advancedcustomfields.com/support/discussion/2068/latest-update-broken-editing-environment- * [Fixed] Fix nested repeater bug - https://www.advancedcustomfields.com/support/discussion/2068/latest-update-broken-editing-environment-
* [Fixed] Test / Fix add multiple images to repeater * [Fixed] Test / Fix add multiple images to repeater
= 3.2.1 = = 3.2.1 =
@ -1430,7 +1454,7 @@ http://support.advancedcustomfields.com/
== Upgrade Notice == == Upgrade Notice ==
= 5.2.7 = = 5.2.7 =
* Field class names have changed slightly in v5.2.7 from `field_type-{$type}` to `acf-field-{$type}`. This change was introduced to better optimise JS performance. The previous class names can be added back in with the following filter: http://www.advancedcustomfields.com/resources/acfcompatibility/ * Field class names have changed slightly in v5.2.7 from `field_type-{$type}` to `acf-field-{$type}`. This change was introduced to better optimise JS performance. The previous class names can be added back in with the following filter: https://www.advancedcustomfields.com/resources/acfcompatibility/
= 3.0.0 = = 3.0.0 =
* Editor is broken in WordPress 3.3 * Editor is broken in WordPress 3.3