Ticket #13019: multiple-category-dropdowns.patch

File multiple-category-dropdowns.patch, 1.2 KB (added by froman118, 3 years ago)

output JS function only once, pass in unique dropdown ID

  • default-widgets.php

     
    438438                $cat_args = array('orderby' => 'name', 'show_count' => $c, 'hierarchical' => $h); 
    439439 
    440440                if ( $d ) { 
     441                        static $dropdown_count = 0; 
     442 
     443                        $cat_id = 'dropdown-'.$args['widget_id']; 
     444                        $cat_args['id'] = $cat_args['name'] = $cat_id; 
    441445                        $cat_args['show_option_none'] = __('Select Category'); 
    442446                        wp_dropdown_categories(apply_filters('widget_categories_dropdown_args', $cat_args)); 
    443447?> 
    444448 
    445449<script type='text/javascript'> 
    446450/* <![CDATA[ */ 
    447         var dropdown = document.getElementById("cat"); 
    448         function onCatChange() { 
     451<?php if ( $dropdown_count == 0 ) { ?> 
     452        function onCatChange( dropdownID ) { 
     453                var dropdown = document.getElementById(dropdownID); 
    449454                if ( dropdown.options[dropdown.selectedIndex].value > 0 ) { 
    450455                        location.href = "<?php echo home_url(); ?>/?cat="+dropdown.options[dropdown.selectedIndex].value; 
    451456                } 
    452457        } 
    453         dropdown.onchange = onCatChange; 
     458<?php } ?> 
     459        document.getElementById("<?php echo $cat_id; ?>").onchange = function(){onCatChange(this.id)}; 
    454460/* ]]> */ 
    455461</script> 
    456462 
    457463<?php 
     464                $dropdown_count++; 
    458465                } else { 
    459466?> 
    460467                <ul>