validate_page() ) { return; } // actions do_action('acf/input/admin_enqueue_scripts'); add_action('admin_head', array($this,'admin_head')); } /* * admin_head * * This action will find and add field groups to the current edit page * * @type action (admin_head) * @date 23/06/12 * @since 3.1.8 * * @param N/A * @return N/A */ function admin_head() { // globals global $post, $pagenow, $typenow; // shopp if( $pagenow == "admin.php" && isset( $_GET['page'] ) && $_GET['page'] == "shopp-products" && isset( $_GET['id'] ) ) { $typenow = "shopp_product"; } // vars $post_id = $post ? $post->ID : 0; // get field groups $filter = array( 'post_id' => $post_id, 'post_type' => $typenow ); $metabox_ids = array(); $metabox_ids = apply_filters( 'acf/location/match_field_groups', $metabox_ids, $filter ); // get style of first field group $style = ''; if( isset($metabox_ids[0]) ) { $style = $this->get_style( $metabox_ids[0] ); } // Style echo ''; // add user js + css do_action('acf/input/admin_head'); // get field groups $acfs = apply_filters('acf/get_field_groups', array()); if( $acfs ) { foreach( $acfs as $acf ) { // load options $acf['options'] = apply_filters('acf/field_group/get_options', array(), $acf['id']); // vars $show = in_array( $acf['id'], $metabox_ids ) ? 1 : 0; // priority $priority = 'high'; if( $acf['options']['position'] == 'side' ) { $priority = 'core'; } $priority = apply_filters('acf/input/meta_box_priority', $priority, $acf); // add meta box add_meta_box( 'acf_' . $acf['id'], $acf['title'], array($this, 'meta_box_input'), $typenow, $acf['options']['position'], $priority, array( 'field_group' => $acf, 'show' => $show, 'post_id' => $post_id ) ); } // foreach($acfs as $acf) } // if($acfs) // Allow 'acf_after_title' metabox position add_action('edit_form_after_title', array($this, 'edit_form_after_title')); // remove ACF from meta postbox add_filter( 'is_protected_meta', array($this, 'is_protected_meta'), 10, 3 ); } /* * edit_form_after_title * * This action will allow ACF to render metaboxes after the title * * @type action * @date 17/08/13 * * @param N/A * @return N/A */ function edit_form_after_title() { // globals global $post, $wp_meta_boxes; // render do_meta_boxes( get_current_screen(), 'acf_after_title', $post); // clean up unset( $wp_meta_boxes['post']['acf_after_title'] ); // preview hack // the following code will add a hidden input which will trigger WP to create a revision apon save // http://support.advancedcustomfields.com/forums/topic/preview-solution/#post-4106 ?>
'; } // nonce echo '
'; echo ''; ?> '; } /* * get_style * * @description: called by admin_head to generate acf css style (hide other metaboxes) * @since 2.0.5 * @created: 23/06/12 */ function get_style( $acf_id ) { // vars $options = apply_filters('acf/field_group/get_options', array(), $acf_id); $html = ''; // add style to html if( in_array('permalink',$options['hide_on_screen']) ) { $html .= '#edit-slug-box {display: none;} '; } if( in_array('the_content',$options['hide_on_screen']) ) { $html .= '#postdivrich {display: none;} '; } if( in_array('excerpt',$options['hide_on_screen']) ) { $html .= '#postexcerpt, #screen-meta label[for=postexcerpt-hide] {display: none;} '; } if( in_array('custom_fields',$options['hide_on_screen']) ) { $html .= '#postcustom, #screen-meta label[for=postcustom-hide] { display: none; } '; } if( in_array('discussion',$options['hide_on_screen']) ) { $html .= '#commentstatusdiv, #screen-meta label[for=commentstatusdiv-hide] {display: none;} '; } if( in_array('comments',$options['hide_on_screen']) ) { $html .= '#commentsdiv, #screen-meta label[for=commentsdiv-hide] {display: none;} '; } if( in_array('slug',$options['hide_on_screen']) ) { $html .= '#slugdiv, #screen-meta label[for=slugdiv-hide] {display: none;} '; } if( in_array('author',$options['hide_on_screen']) ) { $html .= '#authordiv, #screen-meta label[for=authordiv-hide] {display: none;} '; } if( in_array('format',$options['hide_on_screen']) ) { $html .= '#formatdiv, #screen-meta label[for=formatdiv-hide] {display: none;} '; } if( in_array('featured_image',$options['hide_on_screen']) ) { $html .= '#postimagediv, #screen-meta label[for=postimagediv-hide] {display: none;} '; } if( in_array('revisions',$options['hide_on_screen']) ) { $html .= '#revisionsdiv, #screen-meta label[for=revisionsdiv-hide] {display: none;} '; } if( in_array('categories',$options['hide_on_screen']) ) { $html .= '#categorydiv, #screen-meta label[for=categorydiv-hide] {display: none;} '; } if( in_array('tags',$options['hide_on_screen']) ) { $html .= '#tagsdiv-post_tag, #screen-meta label[for=tagsdiv-post_tag-hide] {display: none;} '; } if( in_array('send-trackbacks',$options['hide_on_screen']) ) { $html .= '#trackbacksdiv, #screen-meta label[for=trackbacksdiv-hide] {display: none;} '; } return $html; } /* * ajax_get_input_style * * @description: called by input-actions.js to hide / show other metaboxes * @since 2.0.5 * @created: 23/06/12 */ function ajax_get_style() { // vars $options = array( 'acf_id' => 0, 'nonce' => '' ); // load post options $options = array_merge($options, $_POST); // verify nonce if( ! wp_verify_nonce($options['nonce'], 'acf_nonce') ) { die(0); } // return style echo $this->get_style( $options['acf_id'] ); // die die; } /* * ajax_render_fields * * @description: * @since 3.1.6 * @created: 23/06/12 */ function ajax_render_fields() { // defaults $options = array( 'acf_id' => 0, 'post_id' => 0, 'nonce' => '' ); // load post options $options = array_merge($options, $_POST); // verify nonce if( ! wp_verify_nonce($options['nonce'], 'acf_nonce') ) { die(0); } // get acfs $acfs = apply_filters('acf/get_field_groups', array()); if( $acfs ) { foreach( $acfs as $acf ) { if( $acf['id'] == $options['acf_id'] ) { $fields = apply_filters('acf/field_group/get_fields', array(), $acf['id']); do_action('acf/create_fields', $fields, $options['post_id']); break; } } } die(); } /* * save_post * * @description: Saves the field / location / option data for a field group * @since 1.0.0 * @created: 23/06/12 */ 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 nonce if( !isset($_POST['acf_nonce'], $_POST['fields']) || !wp_verify_nonce($_POST['acf_nonce'], 'input') ) { return $post_id; } // if save lock contains a value, the save_post action is already running for another post. // this would imply that the user is hooking into an ACF update_value or save_post action and inserting a new post // if this is the case, we do not want to save all the $POST data to this post. if( isset($GLOBALS['acf_save_lock']) && $GLOBALS['acf_save_lock'] ) { return $post_id; } // update the post (may even be a revision / autosave preview) do_action('acf/save_post', $post_id); } /* * is_protected_meta * * This function will remove any ACF meta from showing in the meta postbox * * @type function * @date 12/04/2014 * @since 5.0.0 * * @param $post_id (int) * @return $post_id (int) */ function is_protected_meta( $protected, $meta_key, $meta_type ) { // globals global $post; // if acf_get_field_reference returns a valid key, this is an acf value, so protect it! if( !$protected ) { $reference = get_field_reference( $meta_key, $post->ID ); if( substr($reference, 0, 6) === 'field_' ) { $protected = true; } } // return return $protected; } } new acf_controller_post(); ?>