parent = $parent; // actions add_action('admin_print_scripts', array($this,'admin_print_scripts')); add_action('admin_print_styles', array($this,'admin_print_styles')); add_action('admin_head', array($this,'admin_head')); // save $save_priority = 20; if( isset($_POST['post_type']) ) { if( $_POST['post_type'] == "tribe_events" ){ $save_priority = 15; } } add_action('save_post', array($this, 'save_post'), $save_priority); // save later to avoid issues with 3rd party plugins // custom actions (added in 3.1.8) add_action('acf_head-input', array($this, 'acf_head_input')); add_action('acf_print_scripts-input', array($this, 'acf_print_scripts_input')); add_action('acf_print_styles-input', array($this, 'acf_print_styles_input')); add_action('wp_restore_post_revision', array($this, 'wp_restore_post_revision'), 10, 2 ); add_filter('_wp_post_revision_fields', array($this, 'wp_post_revision_fields') ); // ajax add_action('wp_ajax_acf_input', array($this, 'ajax_acf_input')); add_action('wp_ajax_get_input_style', array($this, 'ajax_get_input_style')); // edit attachment hooks (used by image / file / gallery) add_action('admin_head-media.php', array($this, 'admin_head_media')); add_action('admin_head-upload.php', array($this, 'admin_head_upload')); } /* * validate_page * * @description: returns true | false. Used to stop a function from continuing * @since 3.2.6 * @created: 23/06/12 */ function validate_page() { // global global $pagenow, $typenow; // vars $return = false; // validate page if( in_array( $pagenow, array('post.php', 'post-new.php') ) ) { // validate post type global $typenow; if( $typenow != "acf" ) { $return = true; } } // validate page (Shopp) if( $pagenow == "admin.php" && isset( $_GET['page'] ) && $_GET['page'] == "shopp-products" && isset( $_GET['id'] ) ) { $return = true; } // return return $return; } /* * admin_print_scripts * * @description: * @since 3.1.8 * @created: 23/06/12 */ function admin_print_scripts() { // validate page if( ! $this->validate_page() ) return; do_action('acf_print_scripts-input'); // only "edit post" input pages need the ajax wp_enqueue_script(array( 'acf-input-ajax', )); } /* * admin_print_styles * * @description: * @since 3.1.8 * @created: 23/06/12 */ function admin_print_styles() { // validate page if( ! $this->validate_page() ) return; do_action('acf_print_styles-input'); } /* * admin_head * * @description: * @since 3.1.8 * @created: 23/06/12 */ function admin_head() { // validate page if( ! $this->validate_page() ) return; // 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_input_style( $metabox_ids[0] ); } // Style echo ''; echo ''; // add user js + css do_action('acf_head-input'); // get acf's $acfs = apply_filters('acf/get_field_groups', false); if($acfs) { foreach($acfs as $acf) { // hide / show $show = in_array($acf['id'], $metabox_ids) ? 1 : 0; $priority = 'high'; if( $acf['options']['position'] == 'side' ) { $priority = 'core'; } // add meta box add_meta_box( 'acf_' . $acf['id'], $acf['title'], array($this, 'meta_box_input'), $typenow, $acf['options']['position'], $priority, array( 'fields' => $acf['fields'], 'options' => $acf['options'], 'show' => $show, 'post_id' => $post->ID ) ); } // foreach($acfs as $acf) } // if($acfs) } /* * get_input_style * * @description: called by admin_head to generate acf css style (hide other metaboxes) * @since 2.0.5 * @created: 23/06/12 */ function get_input_style($acf_id = false) { // vars $acfs = apply_filters('acf/get_field_groups', false); $html = ""; // find acf if($acfs) { foreach($acfs as $acf) { if($acf['id'] != $acf_id) continue; // add style to html if( in_array('the_content',$acf['options']['hide_on_screen']) ) { $html .= '#postdivrich {display: none;} '; } if( in_array('excerpt',$acf['options']['hide_on_screen']) ) { $html .= '#postexcerpt, #screen-meta label[for=postexcerpt-hide] {display: none;} '; } if( in_array('custom_fields',$acf['options']['hide_on_screen']) ) { $html .= '#postcustom, #screen-meta label[for=postcustom-hide] { display: none; } '; } if( in_array('discussion',$acf['options']['hide_on_screen']) ) { $html .= '#commentstatusdiv, #screen-meta label[for=commentstatusdiv-hide] {display: none;} '; } if( in_array('comments',$acf['options']['hide_on_screen']) ) { $html .= '#commentsdiv, #screen-meta label[for=commentsdiv-hide] {display: none;} '; } if( in_array('slug',$acf['options']['hide_on_screen']) ) { $html .= '#slugdiv, #screen-meta label[for=slugdiv-hide] {display: none;} '; } if( in_array('author',$acf['options']['hide_on_screen']) ) { $html .= '#authordiv, #screen-meta label[for=authordiv-hide] {display: none;} '; } if( in_array('format',$acf['options']['hide_on_screen']) ) { $html .= '#formatdiv, #screen-meta label[for=formatdiv-hide] {display: none;} '; } if( in_array('featured_image',$acf['options']['hide_on_screen']) ) { $html .= '#postimagediv, #screen-meta label[for=postimagediv-hide] {display: none;} '; } if( in_array('revisions',$acf['options']['hide_on_screen']) ) { $html .= '#revisionsdiv, #screen-meta label[for=revisionsdiv-hide] {display: none;} '; } if( in_array('categories',$acf['options']['hide_on_screen']) ) { $html .= '#categorydiv, #screen-meta label[for=categorydiv-hide] {display: none;} '; } if( in_array('tags',$acf['options']['hide_on_screen']) ) { $html .= '#tagsdiv-post_tag, #screen-meta label[for=tagsdiv-post_tag-hide] {display: none;} '; } if( in_array('send-trackbacks',$acf['options']['hide_on_screen']) ) { $html .= '#trackbacksdiv, #screen-meta label[for=trackbacksdiv-hide] {display: none;} '; } break; } // foreach($acfs as $acf) } //if($acfs) return $html; } /* * the_input_style * * @description: called by input-actions.js to hide / show other metaboxes * @since 2.0.5 * @created: 23/06/12 */ function ajax_get_input_style() { // overrides if(isset($_POST['acf_id'])) { echo $this->get_input_style($_POST['acf_id']); } die; } /* * meta_box_input * * @description: * @since 1.0.0 * @created: 23/06/12 */ function meta_box_input($post, $args) { // vars $options = array( 'fields' => array(), 'options' => array( 'layout' => 'default' ), 'show' => 0, 'post_id' => 0, ); $options = array_merge( $options, $args['args'] ); // needs fields if( $options['fields'] ) { echo ''; echo '
'; if( $options['show'] ) { $this->parent->render_fields_for_input( $options['fields'], $options['post_id'] ); } else { echo '