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(); ?>