name = 'Advanced Custom Fields'; $this->path = dirname(__FILE__).''; $this->dir = plugins_url('',__FILE__); $this->siteurl = get_bloginfo('url'); $this->wpadminurl = admin_url(); $this->version = '1.1.4'; // set text domain load_plugin_textdomain('acf', false, $this->path.'/lang' ); // populate post types $this->fields = $this->_get_field_types(); // add actions add_action('init', array($this, '_init')); add_action('admin_head', array($this,'_admin_head')); add_action('admin_menu', array($this,'_admin_menu')); add_action('save_post', array($this, '_save_post')); add_action('admin_footer-edit.php', array($this, '_admin_footer')); // add thickbox add_action("admin_print_scripts", array($this, '_admin_print_scripts')); add_action("admin_print_styles", array($this, '_admin_print_styles')); //register_activation_hook(__FILE__, array($this,'activate')); return true; } /*--------------------------------------------------------------------------------------------- * Update * * @author Elliot Condon * @since 1.0.6 * ---------------------------------------------------------------------------------------------*/ function update() { include('core/update.php'); } /*--------------------------------------------------------------------------------------------- * Init * * @author Elliot Condon * @since 1.0.0 * ---------------------------------------------------------------------------------------------*/ function _init() { // create acf post type $this->_acf_post_type(); } function _admin_print_scripts() { $currentFile = $_SERVER["SCRIPT_NAME"]; $parts = Explode('/', $currentFile); $currentFile = $parts[count($parts) - 1]; if($currentFile == 'edit.php' && $_GET['post_type'] == 'acf') { wp_enqueue_script('thickbox'); } } function _admin_print_styles() { $currentFile = $_SERVER["SCRIPT_NAME"]; $parts = Explode('/', $currentFile); $currentFile = $parts[count($parts) - 1]; if($currentFile == 'edit.php' && $_GET['post_type'] == 'acf') { wp_enqueue_style('thickbox'); } } /*--------------------------------------------------------------------------------------------- * Save Post * * @author Elliot Condon * @since 1.0.0 * ---------------------------------------------------------------------------------------------*/ function _save_post($post_id) { // do not save if this is an auto save routine if (defined('DOING_AUTOSAVE') && DOING_AUTOSAVE) return $post_id; // verify this with nonce because save_post can be triggered at other times if (!wp_verify_nonce($_POST['ei_noncename'], 'ei-n')) return $post_id; // only save once! WordPress save's twice for some strange reason. global $flag; if ($flag != 0) return $post_id; $flag = 1; // set post ID if is a revision if(wp_is_post_revision($post_id)) { $post_id = wp_is_post_revision($post_id); } // delete _acf custom fields if needed if($_POST['fields_meta_box'] == 'true' || $_POST['location_meta_box'] == 'true' || $_POST['input_meta_box'] == 'true') { $this->delete_acf_custom_fields($post_id); } // include meta box save files include('core/fields_save.php'); include('core/location_save.php'); include('core/options_save.php'); include('core/input_save.php'); } /*--------------------------------------------------------------------------------------------- * Create ACF Post Type * * @author Elliot Condon * @since 1.0.0 * ---------------------------------------------------------------------------------------------*/ function _acf_post_type() { include('core/acf_post_type.php'); } /*--------------------------------------------------------------------------------------------- * Admin Menu * * @author Elliot Condon * @since 1.0.0 * ---------------------------------------------------------------------------------------------*/ function _admin_menu() { // add sub menu add_submenu_page('options-general.php', 'CFA', __('Adv Custom Fields','acf'), 'manage_options','edit.php?post_type=acf'); // remove acf menu item global $menu; $restricted = array(__('Advanced Custom Fields','acf')); end ($menu); while (prev($menu)){ $value = explode(' ',$menu[key($menu)][0]); if(in_array($value[0] != NULL?$value[0]:"" , $restricted)){unset($menu[key($menu)]);} } } /*--------------------------------------------------------------------------------------------- * Admin Head * * @author Elliot Condon * @since 1.0.0 * ---------------------------------------------------------------------------------------------*/ function _admin_head() { include('core/admin_head.php'); } /*--------------------------------------------------------------------------------------------- * activate * * @author Elliot Condon * @since 1.0.0 * ---------------------------------------------------------------------------------------------*/ function activate() { //include('core/update.php'); } /*--------------------------------------------------------------------------------------------- * _get_field_types * * @author Elliot Condon * @since 1.0.0 * ---------------------------------------------------------------------------------------------*/ function _get_field_types() { $array = array(); include('core/fields/text.php'); include('core/fields/textarea.php'); include('core/fields/wysiwyg.php'); include('core/fields/image.php'); include('core/fields/file.php'); include('core/fields/select.php'); include('core/fields/checkbox.php'); include('core/fields/true_false.php'); include('core/fields/page_link.php'); include('core/fields/post_object.php'); include('core/fields/date_picker/date_picker.php'); $array['text'] = new Text(); $array['textarea'] = new Textarea(); $array['wysiwyg'] = new Wysiwyg(); $array['image'] = new Image(); $array['file'] = new File(); $array['select'] = new Select($this); $array['checkbox'] = new Checkbox(); $array['true_false'] = new True_false(); $array['page_link'] = new Page_link($this); $array['post_object'] = new Post_object($this); $array['date_picker'] = new Date_picker($this->dir); return $array; } /*--------------------------------------------------------------------------------------------- * create_field * * @author Elliot Condon * @since 1.0.0 * ---------------------------------------------------------------------------------------------*/ function create_field($field) { if(!is_object($this->fields[$field->type])) { _e('Error: Field Type does not exist!','acf'); return false; } $this->fields[$field->type]->html($field); } /*--------------------------------------------------------------------------------------------- * save_field * * @author Elliot Condon * @since 1.0.0 * ---------------------------------------------------------------------------------------------*/ function save_field($options) { if(!$this->fields[$options['field_type']]) { _e('Error: Field Type does not exist!','acf'); return false; } $this->fields[$options['field_type']]->save_field($options['post_id'], $options['field_name'], $options['field_value']); } /*--------------------------------------------------------------------------------------------- * Add Meta Box to the ACF post type edit page * * @author Elliot Condon * @since 1.0.0 * ---------------------------------------------------------------------------------------------*/ function _fields_meta_box() { include('core/fields_meta_box.php'); } /*--------------------------------------------------------------------------------------------- * Add Meta Box to the ACF post type edit page * * @author Elliot Condon * @since 1.0.0 * ---------------------------------------------------------------------------------------------*/ function _location_meta_box() { include('core/location_meta_box.php'); } /*--------------------------------------------------------------------------------------------- * Add Meta Box to the selected post type edit page * * @author Elliot Condon * @since 1.0.0 * ---------------------------------------------------------------------------------------------*/ function _input_meta_box($post, $args) { include('core/input_meta_box.php'); } /*--------------------------------------------------------------------------------------------- * Add Meta Box to the ACF post type edit page * * @author Elliot Condon * @since 1.0.0 * ---------------------------------------------------------------------------------------------*/ function _options_meta_box() { include('core/options_meta_box.php'); } /*--------------------------------------------------------------------------------------------- * delete_acf_custom_fields * * @author Elliot Condon * @since 1.0.0 * ---------------------------------------------------------------------------------------------*/ function delete_acf_custom_fields($post_id) { foreach(get_post_custom($post_id) as $key => $values) { if(strpos($key, '_acf') !== false) { // this custom field needs to be deleted! delete_post_meta($post_id, $key); } } } /*--------------------------------------------------------------------------------------------- * get_fields * * @author Elliot Condon * @since 1.0.0 * ---------------------------------------------------------------------------------------------*/ function get_fields($acf_id) { // set table name global $wpdb; $table_name = $wpdb->prefix.'acf_fields'; // get fields $fields = $wpdb->get_results("SELECT * FROM $table_name WHERE post_id = '$acf_id' ORDER BY order_no,name"); // if fields are empty, this must be a new or broken acf. add blank field if(empty($fields)) { $fields = array(); $field = new stdClass(); $field->label = ''; $field->name = ''; $field->type = ''; $field->options = ''; $fields[] = $field; } // loop through fields foreach($fields as $field) { // unserialize options $field->options = unserialize($field->options); } // return fields return $fields; } /*--------------------------------------------------------------------------------------------- * get_field_options * * @author Elliot Condon * @since 1.0.0 * ---------------------------------------------------------------------------------------------*/ function get_field_options($type, $options) { $field_options = $this->fields[$type]->options(); ?>
| create_field('text',$options); ?> |