fusion_meta_box = $config; // Add Actions. add_action( 'admin_init', array( $this, 'init_hooks' ) ); // Add styles and scripts. add_action( 'admin_print_styles', array( $this, 'add_scripts_styles' ) ); } /** * Add Meta Boxes for post types. * * @access public * @since 5.3 */ public function init_hooks() { // Loop through array and init hooks. foreach ( $this->fusion_meta_box['screens'] as $screen ) { // add fields to edit form. add_action( $screen . '_edit_form', array( $this, 'render_edit_form' ) ); // add fields to add new form. add_action( $screen . '_add_form_fields', array( $this, 'render_new_form' ) ); // this saves the edit fields. add_action( 'edited_' . $screen, array( $this, 'save_data' ), 10, 2 ); // this saves the add fields. add_action( 'created_' . $screen, array( $this, 'save_data' ), 10, 2 ); } } /** * Add styles and scripts. * * @access public * @since 5.3 */ public function add_scripts_styles() { $screen = get_current_screen(); // Add resources on required screens only. if ( 'edit-tags' === $screen->base || 'term' === $screen->base ) { // Enqueu built-in script and style for color picker. wp_enqueue_style( 'wp-color-picker' ); wp_enqueue_script( 'wp-color-picker' ); if ( defined( 'FUSION_LIBRARY_URL' ) ) { wp_enqueue_script( 'wp-color-picker-alpha', trailingslashit( FUSION_LIBRARY_URL ) . 'inc/redux/custom-fields/color_alpha/wp-color-picker-alpha.js', array( 'wp-color-picker' ), '1.2' ); } // Enqueu built-in script and styles for media JavaScript APIs. wp_enqueue_media(); $ver = Avada::get_theme_version(); wp_enqueue_script( 'avada-tax-meta-js', trailingslashit( Avada::$template_dir_url ) . 'assets/admin/js/avada-tax-meta.js', array( 'jquery' ), $ver, true ); wp_enqueue_style( 'avada-tax-meta-css', trailingslashit( Avada::$template_dir_url ) . 'assets/admin/css/avada-tax-meta.css', array(), $ver ); if ( class_exists( 'Avada' ) ) { wp_enqueue_script( 'selectwoo-js', Avada::$template_dir_url . '/assets/admin/js/selectWoo.full.min.js', array( 'jquery' ), '1.0.2' ); wp_enqueue_style( 'select2-css', Avada::$template_dir_url . '/assets/admin/css/select2.css', array(), '4.0.3', 'all' ); } // End if(). } // End if(). } /** * Set type of the form. * * @access public * @since 5.3 * @param string $type Type of the form. */ public function set_form_type( $type ) { $this->form_type = $type; } /** * Callback function to show fields on term edit form. * * @access public * @since 5.3 * @param mixed $term_id ID of current term. */ public function render_edit_form( $term_id ) { $this->set_form_type( 'edit' ); $this->render_fields( $term_id ); } /** * Callback function to show fields on add new taxonomy term form. * * @access public * @since 5.3 * @param mixed $term_id ID of current term. */ public function render_new_form( $term_id ) { $this->set_form_type( 'new' ); $this->render_fields( $term_id ); } /** * Callback function to show fields in meta box. * * @access public * @since 5.3 * @param mixed $term_id ID of current term. */ public function render_fields( $term_id ) { // Check for Object. $term_id = is_object( $term_id ) ? $term_id->term_id : $term_id; $options = get_term_meta( $term_id, self::$options_name, true ); if ( 'edit' === $this->form_type ) { ?> meta_fields as $field ) { $name = $field['id']; // Field value. $meta = isset( $options[ $name ] ) ? $options[ $name ] : ''; $meta = ( '' !== $meta ) ? $meta : ( ( isset( $field['default'] ) && 'color' !== $field['type'] ) ? $field['default'] : '' ); if ( 'image' !== $field['type'] ) { $meta = is_array( $meta ) ? array_map( 'esc_attr', $meta ) : esc_attr( $meta ); } if ( 'edit' === $this->form_type ) { ?> form_type ) { ?> form_type ) { ?>
fusion_meta_box['screens'] ) ) || ( ! current_user_can( 'manage_categories' ) ) ) { return $term_id; } foreach ( $this->meta_fields as $field ) { $name = $field['id']; $type = $field['type']; $new = isset( $_POST[ $name ] ) ? sanitize_text_field( wp_unslash( $_POST[ $name ] ) ) : ''; // Save field data in array. $fields_data[ $name ] = $new; } $this->save_fields_data( $fields_data, $term_id ); // Reset all caches except demo_data, fb_pages and patcher_messages. avada_reset_all_caches( array( 'demo_data' => false, 'fb_pages' => false, 'patcher_messages' => false, ) ); } /** * Common function for saving fields. * * @access public * @since 5.3 * @param array $fields_data data of all fields. * @param string $term_id ID of current temr. */ public function save_fields_data( $fields_data, $term_id ) { delete_term_meta( $term_id, self::$options_name ); update_term_meta( $term_id, self::$options_name, $fields_data ); } /** * Add Text Field to meta box * * @access public * @since 5.3 * @param string $id ID of the field. * @param array $args field aruguments. */ public function text( $id, $args ) { $field = array( 'type' => 'text', 'id' => $id, 'default' => '', 'class' => '', 'desc' => '', 'style' => '', 'name' => 'Text Field', ); $field = array_merge( $field, $args ); $this->meta_fields[] = $field; } /** * Add Select Field to meta box * * @access public * @since 5.3 * @param string $id ID of the field. * @param array $options Array of available options. * @param array $args Field aruguments. */ public function select( $id, $options, $args ) { $field = array( 'type' => 'select', 'id' => $id, 'default' => '', 'class' => '', 'desc' => '', 'style' => '', 'name' => 'Select Field', 'options' => $options, ); $field = array_merge( $field, $args ); $this->meta_fields[] = $field; } /** * Add Radio Button Field to meta box * * @access public * @since 5.3 * @param string $id ID of the field. * @param array $options Array of available options. * @param array $args Field aruguments. */ public function buttonset( $id, $options, $args ) { $field = array( 'type' => 'buttonset', 'id' => $id, 'default' => '', 'class' => '', 'desc' => '', 'style' => '', 'name' => 'Radio Field', 'options' => $options, ); $field = array_merge( $field, $args ); $this->meta_fields[] = $field; } /** * Add Color Picket Field to meta box * * @access public * @since 5.3 * @param string $id ID of the field. * @param array $args Field aruguments. */ public function colorpicker( $id, $args ) { $field = array( 'type' => 'color', 'id' => $id, 'default' => '', 'class' => '', 'desc' => '', 'style' => '', 'name' => 'ColorPicker Field', ); $field = array_merge( $field, $args ); $this->meta_fields[] = $field; } /** * Add Color Picket Field to meta box * * @access public * @since 5.3 * @param string $id ID of the field. * @param array $args Field aruguments. */ public function image( $id, $args ) { $field = array( 'type' => 'image', 'id' => $id, 'default' => '', 'class' => '', 'desc' => '', 'style' => '', 'url' => '', 'name' => 'Image Field', ); $field = array_merge( $field, $args ); $this->meta_fields[] = $field; } /** * Add header to meta box * * @access public * @since 5.3 * @param string $id ID of the field. * @param array $args Field aruguments. */ public function header( $id, $args ) { $field = array( 'type' => 'header', 'id' => $id, 'value' => '', 'style' => '', 'default' => '', ); $field = array_merge( $field, $args ); $this->meta_fields[] = $field; } /** * Render dependency markup. * * @since 5.3 * @param array $dependency dependence options. * @return string $data_dependence markup */ private function render_dependency( $dependency = array() ) { // Disable dependencies if 'dependencies_status' is set to 0. if ( '0' === Avada()->settings->get( 'dependencies_status' ) ) { return ''; } $data_dependency = ''; if ( 0 < count( $dependency ) ) { $data_dependency .= '
'; foreach ( $dependency as $dependence ) { $data_dependency .= ''; } $data_dependency .= '
'; } return $data_dependency; } /** * Show Field Text. * * @access public * @since 5.3 * @param array $field Field data. * @param string $meta Meta data. */ public function render_field_text( $field, $meta ) { $this->render_field_start( $field, $meta ); ?> render_field_end( $field, $meta ); } /** * Show Field Select. * * @access public * @since 5.3 * @param array $field Field data. * @param string $meta Meta data. */ public function render_field_select( $field, $meta ) { if ( ! is_array( $meta ) ) { $meta = (array) $meta; } $this->render_field_start( $field, $meta ); ?> render_field_end( $field, $meta ); } /** * Show Field Select. * * @access public * @since 5.3 * @param array $field Field data. * @param string $meta Meta data. */ public function render_field_buttonset( $field, $meta ) { if ( empty( $meta ) ) { $meta = 'default'; } $this->render_field_start( $field, $meta ); ?>
$option ) : ?>
render_field_end( $field, $meta ); } /** * Show Color Picker. * * @access public * @since 5.3 * @param array $field Field data. * @param string $meta Meta data. */ public function render_field_color( $field, $meta ) { $this->render_field_start( $field, $meta ); ?> render_field_end( $field, $meta ); } /** * Show Image Field. * * @access public * @since 5.3 * @param array $field Field data. * @param string $meta Meta data. */ public function render_field_image( $field, $meta ) { $this->render_field_start( $field, $meta ); $name = esc_attr( $field['id'] ); $has_image = empty( $meta ) ? false : true; $preview_style = 'max-width:100%'; ?> render_field_end( $field, $meta ); } /** * Show header. * * @access public * @since 5.3 * @param array $field Field data. * @param array $meta Meta data. */ public function render_field_header( $field, $meta ) { if ( 'edit' === $this->form_type ) { ?>

form_type ) { ?>

form_type ) { ?>
form_type ) { ?>

form_type ) { ?>

render_dependency( $field['dependency'] ); // WPCS: XSS ok. } if ( 'color' === $field['type'] ) { ?>

form_type ) { ?> form_type ) { ?>