name = 'focal_point';
$this->label = __('Focal Point');
$this->category = __("jQuery",'acf'); // Basic, Content, Choice, etc
$this->defaults = array(
'save_format' => 'tag',
'preview_size' => 'large',
'image_size' => 'large'
);
// settings
$this->settings = array(
'path' => apply_filters('acf/helpers/get_path', __FILE__),
'dir' => apply_filters('acf/helpers/get_dir', __FILE__),
'version' => '1.0.0'
);
// do not delete!
parent::__construct();
}
/*
* create_options()
*
* Create extra options for your field. This is rendered when editing a field.
* The value of $field['name'] can be used (like below) to save extra data to the $field
*
* @type action
* @since 3.6
* @date 23/01/13
*
* @param $field - an array holding all the field's data
*/
function create_options( $field ) {
// Merge defaults
$field = array_merge($this->defaults, $field);
// Key is needed in the field names to correctly save the data
$key = $field['name'];
// Create Field Options HTML
?>
defaults, $field);
// Get set image id
$id = (isset($field['value']['id'])) ? $field['value']['id'] : '';
// data vars
$data = array(
'top' => isset($field['value']['top']) ? $field['value']['top'] : '',
'left' => isset($field['value']['left']) ? $field['value']['left'] : '',
'right' => isset($field['value']['right']) ? $field['value']['right'] : '',
'bottom' => isset($field['value']['bottom']) ? $field['value']['bottom'] : '',
);
// If we already have an image set...
if ($id) {
// Get image by ID, in size set via options
$img = wp_get_attachment_image_src($id, $field['preview_size']);
}
// If image found...
// Set to hide add image button / show canvas
$is_active = ($id) ? 'active' : '';
// And set src
$url = ($id) ? $img[0] : '';
// create Field HTML
?>
$d): ?>
settings['dir'] . 'js/input.js', array('acf-input'), $this->settings['version'] );
wp_register_style( 'acf-input-focal_point', $this->settings['dir'] . 'css/input.css', array('acf-input'), $this->settings['version'] );
// scripts
wp_enqueue_script( array('acf-input-focal_point') );
// styles
wp_enqueue_style( array('acf-input-focal_point') );
}
/*
* format_value_for_api()
*
* This filter is applied to the $value after it is loaded from the db and before it is passed back to the API functions such as the_field
*
* @type filter
* @since 3.6
* @date 23/01/13
*
* @param $value - the value which was loaded from the database
* @param $post_id - the $post_id from which the value was loaded
* @param $field - the field array holding all the field options
*
* @return $value - the modified value
*/
function format_value_for_api( $value, $post_id, $field ) {
// Merge defaults
$field = array_merge($this->defaults, $field);
// validate
if( !$value ) {
return false;
}
// Get image ID
$id = $value['id'];
// If returning an image tag...
if ($field['save_format'] == 'tag') {
// Get image object at desired size
$src = wp_get_attachment_image_src( $id, $field['image_size']);
// Get image alt
$alt = get_post_meta($id, '_wp_attachment_image_alt', true);
// Create tag
$tag = '';
// Return tag
$value = $tag;
}
// Otherwise if returning an object...
elseif ($field['save_format'] == 'object') {
// Get image object
$src = wp_get_attachment_image_src( $id, 'full' );
// validate
if( !$src ) {
return false;
}
// Get attachment values
$attachment = get_post( $id );
// Build return obj
$value = array(
'id' => $attachment->ID,
'focal_point' => array(
'class' => 'js-focal-point-image',
'top' => $value['top'],
'left' => $value['left'],
'right' => $value['right'],
'bottom' => $value['bottom']
),
'alt' => get_post_meta($attachment->ID, '_wp_attachment_image_alt', true),
'title' => $attachment->post_title,
'caption' => $attachment->post_excerpt,
'description' => $attachment->post_content,
'mime_type' => $attachment->post_mime_type,
'url' => $src[0],
'width' => $src[1],
'height' => $src[2],
'sizes' => array(),
);
// Gind all image sizes
$image_sizes = get_intermediate_image_sizes();
// If we have some image sizes...
if ($image_sizes) {
// Loop through each one...
foreach ($image_sizes as $image_size) {
// Get image obj for each size
$src = wp_get_attachment_image_src( $id, $image_size );
// Add img obj values to return obj sizes
$value['sizes'][$image_size] = $src[0];
$value['sizes'][$image_size.'-width'] = $src[1];
$value['sizes'][$image_size.'-height'] = $src[2];
}
} // end if
} // end elseif
return $value;
}
}
// create field
new acf_field_focal_point();
?>