Current File : /home/mdkeenpw/www/wp-content/plugins/trx_addons/components/extended-taxonomy/extended-taxonomy.php |
<?php
/**
* Add Extended Taxonomy functionality
* @package ThemeREX Addons
* @since v1.6.49
*/
// Disable direct call
if ( ! defined( 'ABSPATH' ) ) { exit; }
// Define component's subfolder
if ( ! defined('TRX_ADDONS_EXTENDED_TAXONOMY') ) define( 'TRX_ADDONS_EXTENDED_TAXONOMY', TRX_ADDONS_PLUGIN_COMPONENTS . 'extended-taxonomy/' );
// Define prefix of the meta keys
if ( ! defined('TRX_ADDONS_EXTENDED_TAXONOMY_META_PREFIX') ) define( 'TRX_ADDONS_EXTENDED_TAXONOMY_META_PREFIX', 'trx_addons_ext_tax_' );
// Add component to the global list
if ( ! function_exists( 'trx_addons_extended_taxonomy_add_to_components' ) ) {
add_filter( 'trx_addons_components_list', 'trx_addons_extended_taxonomy_add_to_components' );
function trx_addons_extended_taxonomy_add_to_components( $list = array() ) {
$list['extended-taxonomy'] = array(
'title' => __( 'Extended taxonomy', 'trx_addons' )
);
return $list;
}
}
// Check if component is enabled
if ( ! function_exists( 'trx_addons_extended_taxonomy_enable' ) ) {
function trx_addons_extended_taxonomy_enable() {
static $enable = null;
if ( $enable === null ) {
$enable = trx_addons_components_is_allowed( 'components', 'extended-taxonomy' )
&& apply_filters( 'trx_addons_filter_extended_taxonomy', true );
}
return $enable;
}
}
// Load required styles and scripts for the frontend
if ( ! function_exists( 'trx_addons_extended_taxonomy_load_scripts_front' ) ) {
add_action( "wp_enqueue_scripts", 'trx_addons_extended_taxonomy_load_scripts_front', TRX_ADDONS_ENQUEUE_SCRIPTS_PRIORITY );
function trx_addons_extended_taxonomy_load_scripts_front() {
if ( trx_addons_is_on( trx_addons_get_option( 'debug_mode' ) ) ) {
wp_enqueue_style( 'trx_addons-extended-taxonomy', trx_addons_get_file_url(TRX_ADDONS_EXTENDED_TAXONOMY . 'css/extended-taxonomy.css'), array(), null );
}
}
}
// Merge component's specific styles to the single stylesheet
if ( ! function_exists( 'trx_addons_extended_taxonomy_merge_styles' ) ) {
add_filter( "trx_addons_filter_merge_styles", 'trx_addons_extended_taxonomy_merge_styles' );
function trx_addons_extended_taxonomy_merge_styles( $list ) {
if ( trx_addons_extended_taxonomy_enable() ) {
$list[ TRX_ADDONS_EXTENDED_TAXONOMY . 'css/extended-taxonomy.css' ] = true;
}
return $list;
}
}
// Add admin scripts and styles
if ( ! function_exists( 'trx_addons_extended_taxonomy_admin_scripts' ) ) {
add_action( 'admin_enqueue_scripts', 'trx_addons_extended_taxonomy_admin_scripts' );
function trx_addons_extended_taxonomy_admin_scripts() {
if ( ! trx_addons_extended_taxonomy_enable() ) {
return;
}
wp_enqueue_style( 'trx_addons-extended_taxonomy', trx_addons_get_file_url( TRX_ADDONS_EXTENDED_TAXONOMY . 'css/admin.css' ), array(), null );
}
}
// Return image from the term
if ( ! function_exists( 'trx_addons_get_term_image' ) ) {
function trx_addons_get_term_image( $term_id = 0, $taxonomy = '', $key = '', $check_parents = false ) {
$image = trx_addons_get_term_meta( array(
'term_id' => $term_id,
'taxonomy' => $taxonomy,
'key' => ! empty( $key ) ? $key : TRX_ADDONS_EXTENDED_TAXONOMY_META_PREFIX . 'image_large',
'check_parents' => $check_parents
) );
// Compatibility with old versions - store an image as 'image' key
if ( empty( $key ) && empty( $image ) ) {
$image = trx_addons_get_term_meta( array(
'term_id' => $term_id,
'taxonomy' => $taxonomy,
'key' => 'image',
'check_parents' => $check_parents
) );
// Compatibility with oldest versions - store an image id as 'thumbnail_id' key
if ( empty( $image ) ) {
$image_id = trx_addons_get_term_meta( array(
'term_id' => $term_id,
'taxonomy' => '',
'key' => 'thumbnail_id',
'check_parents' => $check_parents
) );
if ( ! empty( $image_id ) ) {
$image_src = wp_get_attachment_image_src( $image_id );
if ( ! empty( $image_src[0] ) ) {
$image = $image_src[0];
}
}
}
}
return trx_addons_remove_protocol( $image );
}
}
// Return small image from the term
if ( ! function_exists( 'trx_addons_get_term_image_small' ) ) {
function trx_addons_get_term_image_small( $term_id = 0, $taxonomy = '', $key = '', $check_parents = false ) {
$image = trx_addons_get_term_meta( array(
'term_id' => $term_id,
'taxonomy' => $taxonomy,
'key' => ! empty( $key ) ? $key : TRX_ADDONS_EXTENDED_TAXONOMY_META_PREFIX . 'image_small',
'check_parents' => $check_parents
) );
return trx_addons_remove_protocol( $image );
}
}
// Return icon from the term
if ( ! function_exists( 'trx_addons_get_term_icon' ) ) {
function trx_addons_get_term_icon( $term_id = 0, $taxonomy = '', $key = '', $check_parents = false ) {
return trx_addons_get_term_meta( array(
'term_id' => $term_id,
'taxonomy' => $taxonomy,
'key' => ! empty( $key ) ? $key : TRX_ADDONS_EXTENDED_TAXONOMY_META_PREFIX . 'icon',
'check_parents' => $check_parents
) );
}
}
// Return color from the term
if ( ! function_exists( 'trx_addons_get_term_color' ) ) {
function trx_addons_get_term_color( $term_id = 0, $taxonomy = '', $check_parents = false ) {
return trx_addons_get_term_meta( array(
'term_id' => $term_id,
'taxonomy' => $taxonomy,
'key' => TRX_ADDONS_EXTENDED_TAXONOMY_META_PREFIX . 'color',
'check_parents' => $check_parents
) );
}
}
// Add 'Extended Taxonomy' parameters in the ThemeREX Addons Options
if ( ! function_exists( 'trx_addons_extended_taxonomy_options' ) ) {
add_filter( 'trx_addons_filter_options', 'trx_addons_extended_taxonomy_options');
function trx_addons_extended_taxonomy_options( $options ) {
if ( trx_addons_extended_taxonomy_enable() ) {
trx_addons_array_insert_before( $options, 'theme_specific_section', array(
// Section 'Extended Taxonomy'
'extended_taxonomy_section' => array(
"title" => esc_html__('Extended Taxonomy', 'trx_addons'),
"desc" => wp_kses_data( __("Extended taxonomy settings", 'trx_addons') ),
'icon' => 'trx_addons_icon-tag',
"type" => "section"
),
'extended_taxonomy_info' => array(
"title" => esc_html__('Extended Taxonomy', 'trx_addons'),
"desc" => wp_kses_data( __("Add some extended taxonomy attributes", 'trx_addons') ),
"type" => "info"
),
"extended_taxonomy_attributes" => array(
"title" => esc_html__("Attributes to show", 'trx_addons'),
"desc" => wp_kses_data( __("Select taxonomy attributes to show", 'trx_addons') ),
"dir" => 'horizontal',
"std" => array('color' => 1, 'image' => 1, 'icon' => 1),
"options" => apply_filters('trx_addons_filter_extended_taxonomy_attributes', array(
'color' => esc_html__("Text color", 'trx_addons'),
'color_hover' => esc_html__("Text hover", 'trx_addons'),
'color_bg' => esc_html__("Background color", 'trx_addons'),
'color_bg_hover' => esc_html__("Background hover", 'trx_addons'),
'image_large' => esc_html__("Large image", 'trx_addons'),
'image_small' => esc_html__("Small image", 'trx_addons'),
'icon' => esc_html__("Font icon", 'trx_addons'),
)
),
"type" => "checklist"
),
"extended_taxonomy_tax" => array(
"title" => esc_html__("Taxonomy list", 'trx_addons'),
"desc" => wp_kses_data( __("Select taxonomy to add extended taxonomy in it", 'trx_addons') ),
"dir" => 'horizontal',
"group" => true,
"std" => array( 'category' => 1, 'post_tag' => 1 ),
"options" => array(),
"type" => "checklist"
),
) );
}
return $options;
}
}
// Fill 'Taxonomy list' before show ThemeREX Addons Options
if ( ! function_exists( 'trx_addons_extended_taxonomy_before_show_options' ) ) {
add_filter( 'trx_addons_filter_before_show_options', 'trx_addons_extended_taxonomy_before_show_options', 10, 2 );
function trx_addons_extended_taxonomy_before_show_options( $options, $pt = '' ) {
if ( trx_addons_extended_taxonomy_enable() && isset( $options['extended_taxonomy_tax'] ) ) {
$options['extended_taxonomy_tax']['options'] = trx_addons_get_list_taxonomies_all();
}
return $options;
}
}
// Allow title image override
if ( ! function_exists( 'trx_addons_extended_taxonomy_featured_image_override' ) ) {
add_filter( 'trx_addons_filter_featured_image_override', 'trx_addons_extended_taxonomy_featured_image_override');
function trx_addons_extended_taxonomy_featured_image_override( $override ) {
if ( empty( $override ) && trx_addons_extended_taxonomy_enable() && ( is_category() || is_tax() ) ) {
$taxonomy = get_query_var( 'taxonomy' );
if ( empty( $taxonomy ) ) {
$taxonomy = get_query_var( 'category_name' );
}
if ( ! empty( $taxonomy ) && ( $allowed = in_array( $taxonomy, trx_addons_extended_taxonomy_get_selected_attrs( 'tax' ) ) ) ) {
$override = ! get_header_image();
}
}
return $override;
}
}
// Return list of allowed custom post's taxonomies
if ( ! function_exists( 'trx_addons_extended_taxonomy_get_supported_post_types' ) ) {
function trx_addons_extended_taxonomy_get_supported_post_types( $prepend_inherit = false ) {
$list = array();
if ( trx_addons_extended_taxonomy_enable() ) {
global $wp_taxonomies;
$attrs = trx_addons_extended_taxonomy_get_selected_attrs( 'tax' );
foreach ( $attrs as $tax ) {
if ( ( $pt = ( isset( $wp_taxonomies[ $tax ] ) ) ? $wp_taxonomies[ $tax ]->object_type : array() ) ) {
$list[] = $pt[0];
}
}
$list = array_unique( $list );
}
return $prepend_inherit
? trx_addons_array_merge( array( 'inherit' => esc_html__( "Inherit", 'trx_addons' ) ), $list )
: $list;
}
}
// Return terms meta value. If its meta is empty - try to get parents value
if ( ! function_exists( 'trx_addons_extended_taxonomy_get_term_name' ) ) {
add_filter( 'trx_addons_filter_term_name', 'trx_addons_extended_taxonomy_get_term_name', 10, 2 );
add_filter( 'trx_addons_extended_taxonomy_name', 'trx_addons_extended_taxonomy_get_term_name', 10, 2 );
function trx_addons_extended_taxonomy_get_term_name( $term_name = '', $term_obj = false ) {
if ( ! trx_addons_extended_taxonomy_enable()
|| empty( $term_obj )
|| strpos( $term_name, 'trx_addons_extended_taxonomy' ) !== false
|| apply_filters( 'trx_addons_filter_disallow_term_name_modify',
is_admin() && ! in_array( trx_addons_get_value_gp( 'action' ), array( 'trx_addons_item_pagination', 'elementor', 'elementor_ajax', 'wp_ajax_elementor_ajax' ) ),
$term_name,
$term_obj
)
) {
return $term_name;
}
$css = '';
$css_body = '';
$classes = [];
$icon = '';
$term_name = $term_name ? $term_name : $term_obj->name;
$attrs = trx_addons_extended_taxonomy_get_selected_attrs();
$uniqid = trx_addons_generate_id( 'extended_taxonomy_custom_' ); //sanitize_html_class(uniqid('extended_taxonomy_custom_'));
if ( in_array( 'color', $attrs ) ) {
$val = trx_addons_get_term_meta( array( 'term_id' => $term_obj->term_id, 'taxonomy' => $term_obj->taxonomy, 'key' => TRX_ADDONS_EXTENDED_TAXONOMY_META_PREFIX . 'color', 'check_parents' => true ) );
$css_body .= empty($val) ? '' : 'color: ' . $val . ';';
}
if ( in_array( 'color_bg', $attrs ) ) {
$val = trx_addons_get_term_meta( array( 'term_id' => $term_obj->term_id, 'taxonomy' => $term_obj->taxonomy, 'key' => TRX_ADDONS_EXTENDED_TAXONOMY_META_PREFIX . 'color_bg', 'check_parents' => true ) );
if ( ! empty( $val ) ) {
$css_body .= 'background-color: ' . $val . ';';
$classes[] = 'trx_addons_extended_taxonomy_bg';
}
}
if ( ! empty( $css_body ) ) {
$css .= ".{$uniqid} {" . $css_body . "}";
$css .= ".{$uniqid} .trx_addons_extended_taxonomy_icon {" . $css_body . "}";
$css_body = '';
}
if ( in_array( 'color_hover', $attrs ) ) {
$val = trx_addons_get_term_meta( array( 'term_id' => $term_obj->term_id, 'taxonomy' => $term_obj->taxonomy, 'key' => TRX_ADDONS_EXTENDED_TAXONOMY_META_PREFIX . 'color_hover', 'check_parents' => true ) );
$css_body .= empty( $val ) ? '' : 'color: ' . $val . ';';
}
if ( in_array( 'color_bg_hover', $attrs ) ) {
$val = trx_addons_get_term_meta( array( 'term_id' => $term_obj->term_id, 'taxonomy' => $term_obj->taxonomy, 'key' => TRX_ADDONS_EXTENDED_TAXONOMY_META_PREFIX . 'color_bg_hover', 'check_parents' => true ) );
$css_body .= empty( $val ) ? '' : 'background-color: ' . $val . ';';
}
if ( in_array( 'icon', $attrs ) ) {
$icon_font = trx_addons_get_term_meta( array( 'term_id' => $term_obj->term_id, 'taxonomy' => $term_obj->taxonomy, 'key' => TRX_ADDONS_EXTENDED_TAXONOMY_META_PREFIX . 'icon', 'check_parents' => true ) );
$icon = empty( $icon_font ) || trx_addons_is_off( $icon_font ) ? '' : '<span class="trx_addons_extended_taxonomy_icon ' . $icon_font . '"></span>';
if ( empty( $icon ) ) {
$icon = trx_addons_remove_protocol( trx_addons_get_term_meta( array( 'term_id' => $term_obj->term_id, 'taxonomy' => $term_obj->taxonomy, 'key' => TRX_ADDONS_EXTENDED_TAXONOMY_META_PREFIX . 'image_small', 'check_parents' => true ) ) );
if ( ! empty( $icon ) ) {
$trx_addons_attr = trx_addons_getimagesize( $icon );
$icon = '<img class="trx_addons_extended_taxonomy_img" src="' . esc_url( $icon ) . '" alt="' . esc_attr( $term_name ) . '" '
. ( ( ! empty( $trx_addons_attr[3] ) ) ? $trx_addons_attr[3] : '' )
. '>';
}
}
}
if ( ! empty( $css_body ) ) {
$css .= ".{$uniqid}:hover {" . $css_body . "}";
$css .= ".{$uniqid}:hover .trx_addons_extended_taxonomy_icon {" . $css_body . "}";
}
if ( ! empty( $css ) ) {
$css = apply_filters( 'trx_addons_extended_taxonomy_inline_css', $css, $term_obj );
trx_addons_add_inline_css( $css );
}
$term_name = ( ! empty( $css ) || ! empty( $icon )
? '<span class="trx_addons_extended_taxonomy ' . esc_attr( $uniqid ) . ( count( $classes ) > 0 ? ' ' . join( ' ', $classes ) : '' ) . '">'
: ''
)
. $icon
. $term_name
. ( ! empty( $css ) || ! empty( $icon )
? '</span>'
: ''
);
return $term_name;
}
}
// Return attribute's title
if ( ! function_exists( 'trx_addons_extended_taxonomy_get_title' ) ) {
function trx_addons_extended_taxonomy_get_title( $attr ) {
$title = '';
switch ( $attr ) {
case 'image_large': $title = esc_html__("Large image", 'trx_addons'); break;
case 'image_small': $title = esc_html__("Small image", 'trx_addons'); break;
case 'icon': $title = esc_html__("Font icon", 'trx_addons'); break;
case 'color': $title = esc_html__("Color", 'trx_addons'); break;
case 'color_hover': $title = esc_html__("Hover", 'trx_addons'); break;
case 'color_bg': $title = esc_html__("Background color", 'trx_addons'); break;
case 'color_bg_hover': $title = esc_html__("Background hover", 'trx_addons'); break;
}
return $title;
}
}
//-------------------------------------------------------
//-- Extended Taxonomy code
//-------------------------------------------------------
// Return list of a selected taxonomy attributes
if ( ! function_exists( 'trx_addons_extended_taxonomy_get_selected_attrs' ) ) {
function trx_addons_extended_taxonomy_get_selected_attrs( $attr_name = 'attributes' ) {
$attrs = trx_addons_get_option( "extended_taxonomy_{$attr_name}", array(), false );
if ( is_array( $attrs ) ) {
foreach ( $attrs as $pt => $val ) {
if ( empty( $val ) ) {
unset( $attrs[ $pt ] );
}
}
}
return array_keys( (array)$attrs );
}
}
// Add actions with specific post types
if ( ! function_exists( 'trx_addons_extended_taxonomy_add_actions' ) ) {
add_action( 'after_setup_theme', 'trx_addons_extended_taxonomy_add_actions', 10 );
function trx_addons_extended_taxonomy_add_actions() {
if ( trx_addons_extended_taxonomy_enable() ) {
$tax_list = trx_addons_extended_taxonomy_get_selected_attrs( 'tax' );
if ( is_array( $tax_list ) ) {
foreach ( $tax_list as $tax_name ) {
// Add colors, images and icons to the term's output
add_filter( "the_{$tax_name}_list", 'trx_addons_extended_taxonomy_filter_change_list', 10, 2 );
add_filter( "term_links-{$tax_name}", 'trx_addons_extended_taxonomy_filter_change_links', 10, 1 );
// Add extended fields to the add/edit term form
add_action( "{$tax_name}_add_form_fields", 'trx_addons_extended_taxonomy_show_fields', 10, 1 );
add_action( "{$tax_name}_edit_form_fields", 'trx_addons_extended_taxonomy_show_fields', 10, 1 );
// Save extended fields
add_action( "create_{$tax_name}", 'trx_addons_extended_taxonomy_save_meta' );
add_action( "edited_{$tax_name}", 'trx_addons_extended_taxonomy_save_meta' );
// Add columns to the terms list in the admin panel
add_filter( "manage_edit-{$tax_name}_columns", 'trx_addons_extended_taxonomy_add_custom_column', 9 );
add_action( "manage_{$tax_name}_custom_column", 'trx_addons_extended_taxonomy_fill_custom_column', 9, 3 );
}
}
}
}
}
if ( ! function_exists( 'trx_addons_extended_taxonomy_add_get_the_terms' ) ) {
add_action( 'init', 'trx_addons_extended_taxonomy_add_get_the_terms' );
add_action( 'wp_head', 'trx_addons_extended_taxonomy_add_get_the_terms' );
/**
* Add a handler for the filter 'get_the_terms' to change the terms list with extended taxonomy
*
* @hooked init (for AJAX and REST API requests)
* @hooked wp_head (for frontend requests - should be after the loop started)
*/
function trx_addons_extended_taxonomy_add_get_the_terms() {
static $added = false;
if ( ! $added && trx_addons_extended_taxonomy_enable() ) {
if ( apply_filters( 'trx_addons_filter_extended_taxonomy_filter_get_the_terms', false ) ) {
add_filter( 'get_the_terms', 'trx_addons_extended_taxonomy_filter_change_terms', 10, 3 );
$added = true;
}
}
}
}
if ( ! function_exists( 'trx_addons_extended_taxonomy_filter_change_terms' ) ) {
/**
* Filters the list of terms attached to the given post.
*
* @hooked get_the_terms
*
* @param WP_Term[]|WP_Error $terms Array of attached terms, or WP_Error on failure.
* @param int $post_id Post ID.
* @param string $taxonomy Name of the taxonomy.
*
* @return WP_Term[]|WP_Error Array of WP_Term objects on success, WP_Error otherwise.
*/
function trx_addons_extended_taxonomy_filter_change_terms( $terms, $post_id, $taxonomy ) {
static $tax_list = false;
if ( $tax_list === false ) {
$tax_list = trx_addons_extended_taxonomy_get_selected_attrs( 'tax' );
}
if ( ! empty( $taxonomy ) && ! empty( $tax_list ) && in_array( $taxonomy, $tax_list ) ) {
$terms = trx_addons_extended_taxonomy_filter_change_list( $terms, $post_id );
}
return $terms;
}
}
// Modify taxonomy name, one by one by
if ( ! function_exists( 'trx_addons_extended_taxonomy_filter_change_list' ) ) {
// Handler of the add_filter( "the_{$tax_name}_list", 'trx_addons_extended_taxonomy_filter_change_list', 10, 2 );
function trx_addons_extended_taxonomy_filter_change_list( $terms, $post_id = 0 ) {
if ( ! is_array( $terms ) ) {
$terms = array( $terms );
}
foreach ( $terms as $k => $term ) {
$terms[ $k ]->name = apply_filters( 'trx_addons_extended_taxonomy_name', $term->name, $term );
}
return $terms;
}
}
// Modify taxonomy links, one by one by
if ( ! function_exists( 'trx_addons_extended_taxonomy_filter_change_links' ) ) {
// Handler of the add_filter( "term_links-{$tax_name}", 'trx_addons_extended_taxonomy_filter_change_links', 10, 1 );
function trx_addons_extended_taxonomy_filter_change_links ( $links ) {
if ( ! is_array( $links ) ) {
$links = array( $links );
}
$term_slug = str_replace( 'term_links-', '', current_filter() );
foreach ( $links as &$link ) {
preg_match_all( '/>(.*?)<\/a>/', $link, $matches );
$old_name = isset( $matches[1][0] ) ? $matches[1][0] : false;
if ( $old_name ) {
$term = get_term_by( 'name', $old_name, $term_slug );
$term->name = apply_filters( 'trx_addons_extended_taxonomy_name', $term->name, $term );
$link = str_replace( $old_name . '</a>', $term->name . '</a>', $link );
}
}
return $links;
}
}
if ( ! function_exists( 'trx_addons_extended_taxonomy_show_fields' ) ) {
// Handler of the add_action("{$tax_name}_add_form_fields", 'trx_addons_extended_taxonomy_show_fields', 10, 1);
// Handler of the add_action("{$tax_name}_edit_form_fields", 'trx_addons_extended_taxonomy_show_fields', 10, 1);
function trx_addons_extended_taxonomy_show_fields( $term = false ) {
$attrs = trx_addons_extended_taxonomy_get_selected_attrs();
if ( ! is_array( $attrs ) || count( $attrs ) < 1 ) {
return;
}
$term_id = ! empty( $term->term_id ) ? $term->term_id : 0;
$term_tax = ! empty( $term->taxonomy ) ? $term->taxonomy : 0;
trx_addons_enqueue_wp_color_picker();
// Show Icon and Image fields
if ( in_array( 'image_large', $attrs ) ) {
// Category's image
$attrs = array_diff( $attrs, array( 'image_large' ) );
echo ( (int) $term_id > 0 ? '<tr' : '<div') . ' class="form-field">'
. ( (int) $term_id > 0 ? '<th valign="top" scope="row">' : '<div>' );
?><label for="trx_addons_taxonomy_image_large"><?php esc_html_e( 'Large image URL:', 'trx_addons' ); ?></label><?php
echo ( (int) $term_id > 0 ? '</th>' : '</div>' )
. ( (int) $term_id > 0 ? '<td valign="top">' : '<div>' );
$term_img = (int) $term_id > 0 ? trx_addons_get_term_image( $term_id, $term_tax ) : '';
?><input type="hidden" id="trx_addons_taxonomy_image_large" class="trx_addons_image_selector_field"
name="trx_addons_taxonomy_image_large" value="<?php echo esc_url( $term_img ); ?>"><?php
if ( empty( $term_img ) ) {
$term_img = trx_addons_get_no_image();
}
trx_addons_show_layout( trx_addons_options_show_custom_field(
'trx_addons_category_image_button',
array(
'type' => 'mediamanager',
'linked_field_id' => 'trx_addons_taxonomy_image_large'
),
$term_img
) );
echo (int) $term_id > 0 ? '</td></tr>' : '</div></div>';
}
if ( in_array( 'image_small', $attrs ) ) {
// Category's icon
$attrs = array_diff( $attrs, array( 'image_small' ) );
echo ( (int) $term_id > 0 ? '<tr' : '<div' ) . ' class="form-field">'
. ( (int) $term_id > 0 ? '<th valign="top" scope="row">' : '<div>' );
?><label for="trx_addons_taxonomy_image_small"><?php esc_html_e( 'Small image (icon) URL:', 'trx_addons' ); ?></label><?php
echo ( (int) $term_id > 0 ? '</th>' : '</div>' )
. ( (int) $term_id > 0 ? '<td valign="top">' : '<div>' );
$term_img = (int) $term_id > 0 ? trx_addons_get_term_image_small( $term_id, $term_tax ) : '';
?><input type="hidden" id="trx_addons_taxonomy_image_small" class="trx_addons_thumb_selector_field"
name="trx_addons_taxonomy_image_small" value="<?php echo esc_url( $term_img ); ?>"><?php
if ( empty( $term_img ) ) {
$term_img = trx_addons_get_no_image();
}
trx_addons_show_layout( trx_addons_options_show_custom_field(
'trx_addons_category_icon_button',
array(
'type' => 'mediamanager',
'linked_field_id' => 'trx_addons_taxonomy_image_small'
),
$term_img
) );
echo (int) $term_id > 0 ? '</td></tr>' : '</div></div>';
}
foreach ( $attrs as $attr_name ) {
$args = array(
'val' => is_object( $term ) ? get_term_meta( $term_id, TRX_ADDONS_EXTENDED_TAXONOMY_META_PREFIX . $attr_name, true ) : '',
'std' => '',
'desc' => '',
'title' => trx_addons_extended_taxonomy_get_title( $attr_name ),
'type' => explode( '_', $attr_name )[0]
);
if ( $attr_name === 'icon' ) {
$style = trx_addons_get_setting('icons_type');
$args['style'] = $style;
$args['type'] = 'icons';
$args['options'] = trx_addons_get_list_icons( $style );
}
echo ( (int) $term_id > 0 ? '<tr' : '<div' ) . ' class="form-field trx-addons-extended-taxonomy">'
. ( (int) $term_id > 0 ? '<td valign="top" colspan="2">' : '' );
echo trx_addons_options_show_field( $attr_name, $args );
echo (int) $term_id > 0 ? '</td></tr>' : '</div>';
}
}
}
// Save the fields to the taxonomy, using our callback function
if ( ! function_exists( 'trx_addons_extended_taxonomy_save_meta' ) ) {
function trx_addons_extended_taxonomy_save_meta( $term_id ) {
$attrs = trx_addons_extended_taxonomy_get_selected_attrs();
if ( ! is_array( $attrs ) || count( $attrs ) < 1 ) {
return;
}
if ( isset( $_POST['trx_addons_taxonomy_image_large'] ) ) {
trx_addons_set_term_meta( array(
'term_id' => $term_id,
'key' => TRX_ADDONS_EXTENDED_TAXONOMY_META_PREFIX . 'image_large'
),
$_POST['trx_addons_taxonomy_image_large']
);
}
if ( isset( $_POST['trx_addons_taxonomy_image_small'] ) ) {
trx_addons_set_term_meta( array(
'term_id' => $term_id,
'key' => TRX_ADDONS_EXTENDED_TAXONOMY_META_PREFIX . 'image_small'
),
$_POST['trx_addons_taxonomy_image_small']
);
}
foreach ( $attrs as $attr_name ) {
if ( isset( $_POST[ "trx_addons_options_field_{$attr_name}" ] ) ) {
trx_addons_set_term_meta( array(
'term_id' => $term_id,
'key' => TRX_ADDONS_EXTENDED_TAXONOMY_META_PREFIX . $attr_name
),
$_POST[ "trx_addons_options_field_{$attr_name}" ]
);
}
}
}
}
// Create additional column in the terms lists
//------------------------------------------------------------------
if ( ! function_exists( 'trx_addons_extended_taxonomy_add_custom_column' ) ) {
// Handler of the add_filter( "manage_edit-{$tax_name}_columns", 'trx_addons_extended_taxonomy_add_custom_column', 9);
function trx_addons_extended_taxonomy_add_custom_column( $columns ){
$columns['term_image_large'] = esc_html__('Large image', 'trx_addons');
$columns['term_image_small'] = esc_html__('Small image', 'trx_addons');
$columns['term_attrs'] = esc_html__('Extended', 'trx_addons');
return $columns;
}
}
// Fill image column in the categories list
if ( ! function_exists( 'trx_addons_extended_taxonomy_fill_custom_column' ) ) {
// Handler of the add_action( "manage_{$tax_name}_custom_column", 'trx_addons_extended_taxonomy_fill_custom_column', 9, 3);
function trx_addons_extended_taxonomy_fill_custom_column( $output = '', $column_name = '', $term_id = 0 ) {
$tax_name = str_replace( array( 'manage_', '_custom_column' ), '', current_filter() );
if ( $column_name == 'term_image_large' ) {
$term_img = trx_addons_get_term_image( $term_id, $tax_name );
if ( ! empty( $term_img ) ) {
?><img
class="trx_addons_image_selector_preview trx_addons_category_image_preview"
src="<?php echo esc_url( trx_addons_add_thumb_size( $term_img, trx_addons_get_thumb_size( 'tiny' ) ) ); ?>"
alt="<?php esc_attr_e( "Large image", 'trx_addons' ); ?>"><?php
}
} else if ( $column_name == 'term_image_small' ) {
$term_img = trx_addons_get_term_image_small( $term_id, $tax_name );
if ( ! empty( $term_img ) ) {
?><img
class="trx_addons_thumb_selector_preview trx_addons_category_icon_preview"
src="<?php echo esc_url( trx_addons_add_thumb_size( $term_img, trx_addons_get_thumb_size( 'tiny' ) ) ); ?>"
alt="<?php esc_attr_e( "Small image", 'trx_addons' ); ?>"><?php
}
} else if ( $column_name == 'term_attrs' ) {
$attrs = trx_addons_extended_taxonomy_get_selected_attrs();
if ( is_array( $attrs ) ) {
foreach( $attrs as $attr ) {
if ( in_array( $attr, array( 'image_small', 'image_large' ) ) ) {
continue;
}
$val = trx_addons_get_term_meta( array( 'term_id' => $term_id, 'taxonomy' => $tax_name, 'key' => TRX_ADDONS_EXTENDED_TAXONOMY_META_PREFIX . $attr ) );
if ( ! empty( $val ) && ! trx_addons_is_off( $val ) ) {
?><div class="trx_addons_extended_taxonomy_meta_row">
<span class="trx_addons_extended_taxonomy_meta_value<?php echo 'icon' == $attr ? ' ' . esc_attr($val) : ''; ?>"<?php
if ( substr( $attr, 0, 5 ) == 'color' ) {
echo ' style="background-color:' . esc_attr( $val ) . ';"';
}
?>></span>
<span class="trx_addons_extended_taxonomy_meta_label"><?php echo esc_html( trx_addons_extended_taxonomy_get_title( $attr ) ); ?></span>
</div><?php
}
}
}
}
}
}