jQuery( function( $ ) { $('body') .on( 'wc-enhanced-select-init', function() { // Regular select boxes $(":input.wc-enhanced-select, :input.chosen_select").each(function() { $( this ).select2({ minimumResultsForSearch: 10, allowClear: $( this ).data( 'allow_clear' ) ? true : false, placeholder: $( this ).data( 'placeholder' ) }); }); $(":input.wc-enhanced-select-nostd, :input.chosen_select_nostd").each(function() { $( this ).select2({ minimumResultsForSearch: 10, allowClear: true, placeholder: $( this ).data( 'placeholder' ) }); }); // Ajax product search box $(":input.wc-product-search").each(function() { var select2_args = { allowClear: $( this ).data( 'allow_clear' ) ? true : false, placeholder: $( this ).data( 'placeholder' ), minimumInputLength: $( this ).data( 'minimum_input_length' ) ? $( this ).data( 'minimum_input_length' ) : '3', escapeMarkup: function(m) { return m; }, ajax: { url: wc_enhanced_select_params.ajax_url, dataType: 'json', quietMillis: 250, data: function( term, page ) { return { term: term, action: $(this).data( 'action' ) || 'woocommerce_json_search_products_and_variations', security: wc_enhanced_select_params.search_products_nonce }; }, results: function( data, page ) { var terms = []; if ( data ) { $.each( data, function( id, text ) { terms.push( { id: id, text: text } ); }); } return { results: terms }; }, cache: true } }; if ( $( this ).data( 'multiple' ) === true ) { select2_args.multiple = true; select2_args.initSelection = function( element, callback ) { var data = $.parseJSON( element.attr( 'data-selected' ) ); var selected = []; $( element.val().split( "," ) ).each( function( i, val ) { selected.push( { id: val, text: data[ val ] } ); }); return callback( selected ); }; select2_args.formatSelection = function( data ) { return '
' + data.text + '
'; }; } else { select2_args.multiple = false; select2_args.initSelection = function( element, callback ) { var data = {id: element.val(), text: element.attr( 'data-selected' )}; return callback( data ); }; } $( this ).select2( select2_args ); }); // Ajax customer search boxes $(":input.wc-customer-search").each(function() { var select2_args = { allowClear: $( this ).data( 'allow_clear' ) ? true : false, placeholder: $( this ).data( 'placeholder' ), minimumInputLength: $( this ).data( 'minimum_input_length' ) ? $( this ).data( 'minimum_input_length' ) : '3', escapeMarkup: function(m) { return m; }, ajax: { url: wc_enhanced_select_params.ajax_url, dataType: 'json', quietMillis: 250, data: function( term, page ) { return { term: term, action: 'woocommerce_json_search_customers', security: wc_enhanced_select_params.search_customers_nonce }; }, results: function( data, page ) { var terms = []; if ( data ) { $.each( data, function( id, text ) { terms.push( { id: id, text: text } ); }); } return { results: terms }; }, cache: true } }; if ( $( this ).data( 'multiple' ) === true ) { select2_args.multiple = true; select2_args.initSelection = function( element, callback ) { var data = $.parseJSON( element.attr( 'data-selected' ) ); var selected = []; $( element.val().split( "," ) ).each( function( i, val ) { selected.push( { id: val, text: data[ val ] } ); }); return callback( selected ); }; select2_args.formatSelection = function( data ) { return '
' + data.text + '
'; }; } else { select2_args.multiple = false; select2_args.initSelection = function( element, callback ) { var data = {id: element.val(), text: element.attr( 'data-selected' )}; return callback( data ); }; } $( this ).select2( select2_args ); }); } ) .trigger( 'wc-enhanced-select-init' ); });