settings = array( 'path' => apply_filters('acf/helpers/get_path', __FILE__), 'dir' => apply_filters('acf/helpers/get_dir', __FILE__), 'version' => '4.0.1', 'upgrade_version' => '3.4.1', ); // set text domain load_plugin_textdomain('acf', false, basename(dirname(__FILE__)).'/lang' ); // actions add_action('init', array($this, 'init'), 1); add_action('acf/save_post', array($this, 'save_post'), 10); // filters add_filter('acf/get_info', array($this, 'get_info'), 1, 1); add_filter('acf/parse_types', array($this, 'parse_types'), 1, 1); add_filter('acf/get_post_types', array($this, 'get_post_types'), 1, 3); add_filter('acf/get_taxonomies_for_select', array($this, 'get_taxonomies_for_select'), 1, 2); add_filter('acf/get_image_sizes', array($this, 'get_image_sizes'), 1, 1); add_action('acf/create_fields', array($this, 'create_fields'), 1, 2); // admin only if( is_admin() && !ACF_LITE ) { add_action('admin_menu', array($this,'admin_menu')); add_action('admin_head', array($this,'admin_head')); add_filter('post_updated_messages', array($this, 'post_updated_messages')); } return true; } /* * helpers_get_path * * @description: calculates the path (works for plugin / theme folders) * @since: 3.6 * @created: 30/01/13 */ function helpers_get_path( $file ) { return trailingslashit(dirname($file)); } /* * helpers_get_dir * * @description: calculates the directory (works for plugin / theme folders) * @since: 3.6 * @created: 30/01/13 */ function helpers_get_dir( $file ) { $dir = trailingslashit(dirname($file)); $count = 0; // sanitize for Win32 installs $dir = str_replace('\\' ,'/', $dir); // if file is in plugins folder $wp_plugin_dir = str_replace('\\' ,'/', WP_PLUGIN_DIR); $dir = str_replace($wp_plugin_dir, WP_PLUGIN_URL, $dir, $count); if( $count < 1 ) { // if file is in wp-content folder $wp_content_dir = str_replace('\\' ,'/', WP_CONTENT_DIR); $dir = str_replace($wp_content_dir, WP_CONTENT_URL, $dir, $count); } if( $count < 1 ) { // if file is in ??? folder $wp_dir = str_replace('\\' ,'/', ABSPATH); $dir = str_replace($wp_dir, site_url('/'), $dir); } return $dir; } /* * get_info * * @description: helper to get variable from settings array * @since: 3.6 * @created: 24/01/13 */ function get_info( $info ) { // vars $return = false; // specific if( isset($this->settings[ $info ]) ) { $return = $this->settings[ $info ]; } // all if( $info == 'all' ) { $return = $this->settings; } // return return $return; } /* * parse_types * * @description: helper function to set the 'types' of variables * @since: 2.0.4 * @created: 9/12/12 */ function parse_types( $value ) { // is value another array? if( is_array($value) ) { foreach( $value as $k => $v ) { $value[ $k ] = apply_filters( 'acf/parse_types', $v ); } } else { // string if( is_string($value) ) { $value = trim( $value ); } // numbers if( is_numeric($value) ) { // float / int if( strpos($value,'.') !== false ) { $value = floatval( $value ); } else { $value = intval( $value ); } } } // return return $value; } /* * Init * * @description: * @since 1.0.0 * @created: 23/06/12 */ function init() { // Create ACF post type $labels = array( 'name' => __( 'Field Groups', 'acf' ), 'singular_name' => __( 'Advanced Custom Fields', 'acf' ), 'add_new' => __( 'Add New' , 'acf' ), 'add_new_item' => __( 'Add New Field Group' , 'acf' ), 'edit_item' => __( 'Edit Field Group' , 'acf' ), 'new_item' => __( 'New Field Group' , 'acf' ), 'view_item' => __('View Field Group', 'acf'), 'search_items' => __('Search Field Groups', 'acf'), 'not_found' => __('No Field Groups found', 'acf'), 'not_found_in_trash' => __('No Field Groups found in Trash', 'acf'), ); register_post_type('acf', array( 'labels' => $labels, 'public' => false, 'show_ui' => true, '_builtin' => false, 'capability_type' => 'page', 'hierarchical' => true, 'rewrite' => false, 'query_var' => "acf", 'supports' => array( 'title', ), 'show_in_menu' => false, )); // register acf scripts $scripts = array(); $scripts[] = array( 'handle' => 'acf-field-group', 'src' => $this->settings['dir'] . 'js/field-group.js', 'deps' => array('jquery') ); $scripts[] = array( 'handle' => 'acf-input', 'src' => $this->settings['dir'] . 'js/input.php', 'deps' => array('jquery') ); $scripts[] = array( 'handle' => 'acf-input-ajax', 'src' => $this->settings['dir'] . 'js/input/ajax.js', 'deps' => array('jquery', 'acf-input') ); $scripts[] = array( 'handle' => 'acf-datepicker', 'src' => $this->settings['dir'] . 'core/fields/date_picker/jquery.ui.datepicker.js', 'deps' => array('jquery', 'acf-input') ); foreach( $scripts as $script ) { wp_register_script( $script['handle'], $script['src'], $script['deps'], $this->settings['version'] ); } // register acf styles $styles = array( 'acf' => $this->settings['dir'] . 'css/acf.css', 'acf-field-group' => $this->settings['dir'] . 'css/field-group.css', 'acf-global' => $this->settings['dir'] . 'css/global.css', 'acf-input' => $this->settings['dir'] . 'css/input.css', 'acf-datepicker' => $this->settings['dir'] . 'core/fields/date_picker/style.date_picker.css', ); foreach( $styles as $k => $v ) { wp_register_style( $k, $v, false, $this->settings['version'] ); } // register fields include_once('core/fields/_functions.php'); include_once('core/fields/_base.php'); include_once('core/fields/text.php'); include_once('core/fields/textarea.php'); include_once('core/fields/number.php'); include_once('core/fields/email.php'); include_once('core/fields/password.php'); include_once('core/fields/wysiwyg.php'); include_once('core/fields/image.php'); include_once('core/fields/file.php'); include_once('core/fields/select.php'); include_once('core/fields/checkbox.php'); include_once('core/fields/radio.php'); include_once('core/fields/true_false.php'); include_once('core/fields/page_link.php'); include_once('core/fields/post_object.php'); include_once('core/fields/relationship.php'); include_once('core/fields/taxonomy.php'); include_once('core/fields/user.php'); include_once('core/fields/date_picker/date_picker.php'); include_once('core/fields/color_picker.php'); include_once('core/fields/message.php'); include_once('core/fields/tab.php'); // register 3rd party fields do_action('acf/register_fields'); } /* * admin_menu * * @description: * @since 1.0.0 * @created: 23/06/12 */ function admin_menu() { add_utility_page(__("Custom Fields",'acf'), __("Custom Fields",'acf'), 'manage_options', 'edit.php?post_type=acf'); } /* * post_updated_messages * * @description: messages for saving a field group * @since 1.0.0 * @created: 23/06/12 */ function post_updated_messages( $messages ) { global $post, $post_ID; $messages['acf'] = array( 0 => '', // Unused. Messages start at index 1. 1 => __('Field group updated.', 'acf'), 2 => __('Custom field updated.', 'acf'), 3 => __('Custom field deleted.', 'acf'), 4 => __('Field group updated.', 'acf'), /* translators: %s: date and time of the revision */ 5 => isset($_GET['revision']) ? sprintf( __('Field group restored to revision from %s', 'acf'), wp_post_revision_title( (int) $_GET['revision'], false ) ) : false, 6 => __('Field group published.', 'acf'), 7 => __('Field group saved.', 'acf'), 8 => __('Field group submitted.', 'acf'), 9 => __('Field group scheduled for.', 'acf'), 10 => __('Field group draft updated.', 'acf'), ); return $messages; } /*-------------------------------------------------------------------------------------- * * admin_head * * @author Elliot Condon * @since 1.0.0 * *-------------------------------------------------------------------------------------*/ function admin_head() { ?> false)); if($terms) { foreach($terms as $term) { $value = $taxonomy . ':' . $term->term_id; if( $simple_value ) { $value = $term->term_id; } $choices[$post_type_object->label . ': ' . $taxonomy][$value] = $term->name; } } } } } } return $choices; } /* * get_post_types * * @description: * @since: 3.5.5 * @created: 16/12/12 */ function get_post_types( $post_types, $exclude = array(), $include = array() ) { // get all custom post types $post_types = array_merge($post_types, get_post_types()); // core include / exclude $acf_includes = array_merge( array(), $include ); $acf_excludes = array_merge( array( 'acf', 'revision', 'nav_menu_item' ), $exclude ); // include foreach( $acf_includes as $p ) { if( post_type_exists($p) ) { $post_types[ $p ] = $p; } } // exclude foreach( $acf_excludes as $p ) { unset( $post_types[ $p ] ); } return $post_types; } /* * get_image_sizes * * @description: returns an array holding all the image sizes * @since 3.2.8 * @created: 6/07/12 */ function get_image_sizes( $sizes ) { // find all sizes $all_sizes = get_intermediate_image_sizes(); // define default sizes $sizes = array_merge($sizes, array( 'thumbnail' => __("Thumbnail",'acf'), 'medium' => __("Medium",'acf'), 'large' => __("Large",'acf'), 'full' => __("Full",'acf') )); // add extra registered sizes foreach( $all_sizes as $size ) { if( !isset($sizes[ $size ]) ) { $sizes[ $size ] = ucwords( str_replace('-', ' ', $size) ); } } // return array return $sizes; } /* * render_fields_for_input * * @description: * @since 3.1.6 * @created: 23/06/12 */ function create_fields( $fields, $post_id ) { if( is_array($fields) ){ foreach( $fields as $field ){ // if they didn't select a type, skip this field if( !$field['type'] || $field['type'] == 'null' ) continue; // set value if( !isset($field['value']) ) { $field['value'] = apply_filters('acf/load_value', false, $post_id, $field); $field['value'] = apply_filters('acf/format_value', $field['value'], $post_id, $field); } // required $required_class = ""; $required_label = ""; if( $field['required'] ) { $required_class = ' required'; $required_label = ' *'; } echo '
'; echo ''; echo $field['instructions']; echo '
'; $field['name'] = 'fields[' . $field['key'] . ']'; do_action('acf/create_field', $field); echo '