<?php
/**
* Template for displaying the ajax-terms field
* Note: the stored value is an array if WooCommerce >= 3.0; string otherwise
*
* @var array $field The field.
* @package YITH\PluginFramework\Templates\Fields
*/
defined( 'ABSPATH' ) || exit; // Exit if accessed directly.
yith_plugin_fw_enqueue_enhanced_select();
$default_field = array(
'id' => '',
'name' => '',
'class' => 'yith-term-search',
'no_value' => false,
'multiple' => false,
'data' => array(),
'style' => 'width:400px',
'value' => '',
);
foreach ( $default_field as $field_key => $field_value ) {
if ( empty( $field[ $field_key ] ) ) {
$field[ $field_key ] = $field_value;
}
}
unset( $field_key );
unset( $field_value );
list ( $field_id, $class, $no_value, $multiple, $data, $name, $style, $value ) = yith_plugin_fw_extract( $field, 'id', 'class', 'no_value', 'multiple', 'data', 'name', 'style', 'value' );
if ( $no_value ) {
$value = array();
}
$default_data = array(
'action' => 'yith_plugin_fw_json_search_terms',
'placeholder' => __( 'Search for a category...', 'yith-plugin-fw' ),
'allow_clear' => false,
'taxonomy' => 'category',
'term_field' => 'id',
);
$data = wp_parse_args( $data, $default_data );
$show_id = isset( $data['show_id'] ) && $data['show_id'];
// Separate select2 needed data and other data.
$select2_custom_attributes = array();
$select2_data = array();
$select2_data_keys = array( 'placeholder', 'allow_clear', 'action' );
foreach ( $data as $d_key => $d_value ) {
if ( in_array( $d_key, $select2_data_keys, true ) ) {
$select2_data[ $d_key ] = $d_value;
} else {
$select2_custom_attributes[ 'data-' . $d_key ] = $d_value;
}
}
$term_field = $data['term_field'];
// Populate data-selected by value.
$data_selected = array();
if ( ! empty( $value ) ) {
if ( $multiple ) {
if ( 'id' === $term_field ) {
$value = is_array( $value ) ? array_map( 'absint', $value ) : explode( ',', $value );
} else {
$value = is_array( $value ) ? $value : explode( ',', $value );
}
foreach ( $value as $term_value ) {
$the_term = get_term_by( $term_field, $term_value, $data['taxonomy'] );
if ( is_object( $the_term ) ) {
$term_title = wp_kses_post( html_entity_decode( $the_term->name, ENT_QUOTES, get_bloginfo( 'charset' ) ) );
$term_title_suffix = $show_id ? " (#{$the_term->term_id})" : '';
$data_selected[ $term_value ] = $term_title . $term_title_suffix;
} else {
$data_selected[ $term_value ] = '#' . $term_value;
}
}
} else {
$term_value = 'id' === $term_field ? absint( $value ) : $value;
$the_term = get_term_by( $term_field, $term_value, $data['taxonomy'] );
if ( is_object( $the_term ) ) {
$term_title = wp_kses_post( html_entity_decode( $the_term->name, ENT_QUOTES, get_bloginfo( 'charset' ) ) );
$term_title_suffix = $show_id ? " (#{$the_term->term_id})" : '';
$data_selected[ $term_value ] = $term_title . $term_title_suffix;
} else {
$data_selected[ $term_value ] = '#' . $term_value;
}
}
}
// Parse $value to string to prevent issue with wc2.6.
$value = is_array( $value ) ? implode( ',', $value ) : $value;
?>
<div class="yith-plugin-fw-select2-wrapper">
<?php
if ( function_exists( 'yit_add_select2_fields' ) ) {
yit_add_select2_fields(
array(
'id' => $field_id,
'name' => $name,
'class' => $class,
'data-multiple' => $multiple,
'data-placeholder' => $select2_data['placeholder'],
'data-allow_clear' => $select2_data['allow_clear'],
'data-action' => $select2_data['action'],
'custom-attributes' => $select2_custom_attributes,
'style' => $style,
'value' => $value,
'data-selected' => $data_selected,
'data-term-field' => $term_field,
)
);
}
?>
</div>