name = 'file';
$this->label = __("File",'acf');
$this->category = __("Content",'acf');
$this->defaults = array(
'save_format' => 'object',
'library' => 'all'
);
$this->l10n = array(
'select' => __("Select File",'acf'),
'edit' => __("Edit File",'acf'),
'update' => __("Update File",'acf'),
'uploadedTo' => __("Uploaded to this post",'acf'),
);
// do not delete!
parent::__construct();
// filters
add_filter('get_media_item_args', array($this, 'get_media_item_args'));
add_filter('wp_prepare_attachment_for_js', array($this, 'wp_prepare_attachment_for_js'), 10, 3);
// JSON
add_action('wp_ajax_acf/fields/file/get_files', array($this, 'ajax_get_files'));
add_action('wp_ajax_nopriv_acf/fields/file/get_files', array($this, 'ajax_get_files'), 10, 1);
}
/*
* create_field()
*
* Create the HTML interface for your field
*
* @param $field - an array holding all the field's data
*
* @type action
* @since 3.6
* @date 23/01/13
*/
function create_field( $field )
{
// vars
$o = array(
'class' => '',
'icon' => '',
'title' => '',
'size' => '',
'url' => '',
'name' => '',
);
if( $field['value'] && is_numeric($field['value']) )
{
$file = get_post( $field['value'] );
if( $file )
{
$o['class'] = 'active';
$o['icon'] = wp_mime_type_icon( $file->ID );
$o['title'] = $file->post_title;
$o['size'] = size_format(filesize( get_attached_file( $file->ID ) ));
$o['url'] = wp_get_attachment_url( $file->ID );
$explode = explode('/', $o['url']);
$o['name'] = end( $explode );
}
}
?>
-
-
:
:
|
'radio',
'name' => 'fields['.$key.'][save_format]',
'value' => $field['save_format'],
'layout' => 'horizontal',
'choices' => array(
'object' => __("File Object",'acf'),
'url' => __("File URL",'acf'),
'id' => __("File ID",'acf')
)
));
?>
|
|
'radio',
'name' => 'fields['.$key.'][library]',
'value' => $field['library'],
'layout' => 'horizontal',
'choices' => array(
'all' => __('All', 'acf'),
'uploadedTo' => __('Uploaded to post', 'acf')
)
));
?>
|
$attachment->ID,
'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' => wp_get_attachment_url( $attachment->ID ),
);
}
return $value;
}
/*
* get_media_item_args
*
* @description:
* @since: 3.6
* @created: 27/01/13
*/
function get_media_item_args( $vars )
{
$vars['send'] = true;
return($vars);
}
/*
* ajax_get_files
*
* @description:
* @since: 3.5.7
* @created: 13/01/13
*/
function ajax_get_files()
{
// vars
$options = array(
'nonce' => '',
'files' => array()
);
$return = array();
// load post options
$options = array_merge($options, $_POST);
// verify nonce
if( ! wp_verify_nonce($options['nonce'], 'acf_nonce') )
{
die(0);
}
if( $options['files'] )
{
foreach( $options['files'] as $id )
{
$o = array();
$file = get_post( $id );
$o['id'] = $file->ID;
$o['icon'] = wp_mime_type_icon( $file->ID );
$o['title'] = $file->post_title;
$o['size'] = size_format(filesize( get_attached_file( $file->ID ) ));
$o['url'] = wp_get_attachment_url( $file->ID );
$o['name'] = end(explode('/', $o['url']));
$return[] = $o;
}
}
// return json
echo json_encode( $return );
die;
}
/*
* 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 )
{
// array?
if( is_array($value) && isset($value['id']) )
{
$value = $value['id'];
}
// object?
if( is_object($value) && isset($value->ID) )
{
$value = $value->ID;
}
return $value;
}
/*
* wp_prepare_attachment_for_js
*
* this filter allows ACF to add in extra data to an attachment JS object
*
* @type function
* @date 1/06/13
*
* @param {int} $post_id
* @return {int} $post_id
*/
function wp_prepare_attachment_for_js( $response, $attachment, $meta )
{
// default
$fs = '0 kb';
// supress PHP warnings caused by corrupt images
if( $i = @filesize( get_attached_file( $attachment->ID ) ) )
{
$fs = size_format( $i );
}
// update JSON
$response['filesize'] = $fs;
// return
return $response;
}
}
new acf_field_file();
?>