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 ) {
?>
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 );
?>
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 ) {
?>
|