Simon_S.
Newbie-
Posts
4 -
Joined
-
Last visited
Simon_S.'s Achievements
Explorer (1/14)
0
Reputation
-
Не, так форма оставалась открытой, но что бы она становилась активной, всё равно надо было жать кнопку. Я добавил в css .enhanced_search_options {display: block !important;} и в коде все "disabled" заменил на "enabled" И кусок изменил: Заработало
-
3d_max_9 Как ни странно, это я сделал первым делом. Не помогло. Да я бы рад, но ничего не понимаю в JS, поэтому и спрашиваю совета. Как скажете: <?php add_filter('request', 'esf_set_array_var'); function esf_set_array_var($vars) { if( empty($vars['s']) ) return $vars; if( isset($vars['cat']) && strtolower($vars['cat']) == "array" ) unset($vars['cat']); if( isset($vars['tag']) && strtolower($vars['tag']) == "array" ) unset($vars['tag']); $cat = false; if( is_array($_POST['cat']) ) $cat = array_map('intval', $_POST['cat']); elseif( is_array($_GET['cat']) ) $cat = array_map('intval', $_GET['cat']); if( $cat && !in_array(0, $cat) ) // o means all categories $vars['cat'] = implode(',', $cat); $tag = false; //var_dump($_GET['tag']);die(); if( is_array($_POST['tag']) ) $tag = $_POST['tag']; elseif( is_array($_GET['tag']) ) $tag = $_GET['tag']; if( $tag && !in_array("", $tag) ) $vars['tag'] = implode(',', $tag); return $vars; } add_filter('get_search_form', 'esf_search_form'); function esf_search_form($form) { return preg_replace('/((<\/div\s*>\s*)?<\/form\s*>)/', esf_add_form_field(true) . '\\1', $form, 1); } function esf_add_form_field($return = false) { $show_advanced_options_when_loading = is_search() //&& ( get_query_var('cat') || get_query_var('m') || get_query_var('tag') ) ; $dom_id = 'enhanced_search_options'; global $wpdb, $wp_locale; $r = ''; $r .= '<input type="button" class="enhanced_search_options_advanced_button" value="Поиск вариантов" onclick="esf_div=document.getElementById(\'' . $dom_id . '\');if(esf_div.style.display==\'none\') esf_div.style.display=\'block\';else esf_div.style.display=\'none\';document.getElementById(\'' . $dom_id . '_cat\').disabled=!document.getElementById(\'' . $dom_id . '_cat\').disabled;document.getElementById(\'' . $dom_id . '_m\').disabled=!document.getElementById(\'' . $dom_id . '_m\').disabled;esf_tag=document.getElementById(\'' . $dom_id . '_tag\');if(esf_tag) esf_tag.disabled=!esf_tag.disabled;return false;" />'; $r .= '<div class="enhanced_search_options" id="' . $dom_id . '" style="display:' . ( $show_advanced_options_when_loading ? 'block' : 'none' ) . ';">'; //categories /* $cats = wp_dropdown_categories('hierarchical=1&echo=0&show_option_all=ALL'); if( !empty($cats) ) { $r .= '<label for="' . $dom_id . '_cat">Search In Category: </label>'; $r .= str_replace("<select name='cat' id='cat'", "<select name='cat' id='" . $dom_id . "_cat'", $cats); $r .= '<br />'; } */ $current_cats = (array) preg_split('/[,\s]+/', get_query_var('cat')); $r .= '<label for="' . $dom_id . '_cat">Search In Category(s): </label>'; $r .= '<select id="' . $dom_id . '_cat" name="cat[]" value="" multiple="multiple" size="5"' . ( $show_advanced_options_when_loading ? '' : ' disabled="disabled"' ) . '>'; $cats = get_categories(); $r .= '<option value=""' . ( get_query_var('cat') ? '' : ' selected="selected"' ) . '>ALL</option>'; foreach($cats as $cat) $r .= '<option value="' . $cat->term_id . '"' . ( in_array($cat->term_id, $current_cats) ? ' selected="selected"' : '' ) . '>' . $cat->name . '</option>'; $r .= '</select><br />'; // months, part of codes from Wordpress Core code $query = "SELECT YEAR(post_date) AS `year`, MONTH(post_date) AS `month`, count(ID) as posts FROM $wpdb->posts $join $where GROUP BY YEAR(post_date), MONTH(post_date) ORDER BY post_date DESC "; $key = md5($query); $cache = wp_cache_get( 'wp_get_archives' , 'general'); if ( !isset( $cache[ $key ] ) ) { $arcresults = $wpdb->get_results($query); $cache[ $key ] = $arcresults; wp_cache_add( 'wp_get_archives', $cache, 'general' ); } else { $arcresults = $cache[ $key ]; } if($arcresults) { $r .= '<label for="' . $dom_id . '_m">Search In Month: </label>'; $r .= '<select id="' . $dom_id . '_m" name="m" value=""' . ( $show_advanced_options_when_loading ? '' : ' disabled="disabled"' ) . '>'; $r .= '<option value=""' . ( get_query_var('m') ? '' : ' selected="selected"' ) . '>ALL</option>'; foreach( (array)$arcresults as $arcresult ) { if( $arcresult->year == 0 || $arcresult->month == 0 ) continue; //I don't know why, but sometimes happen, maybe a bug. $text = sprintf(__('%1$s %2$d'), $wp_locale->get_month($arcresult->month), $arcresult->year); $r .= '<option value="' . $arcresult->year . zeroise($arcresult->month, 2) . '"' . ( get_query_var('m') == ( $arcresult->year . zeroise($arcresult->month, 2) ) ? ' selected="selected"' : '' ) . '>' . $text . '</option>'; } $r .= '</select><br />'; } //tags $tags = get_terms('post_tag', array( 'number' => 45, 'orderby' => 'count', 'order' => 'DESC' ) ); $current_tags = (array) preg_split('/[,\s]+/', get_query_var('tag')); if ( !empty( $tags ) ) { $r .= '<label for="' . $dom_id . '_tag">Поиск: </label>'; $r .= '<select multiple="multiple" size="5" id="' . $dom_id . '_tag" name="tag[]" value=""' . ( $show_advanced_options_when_loading ? '' : ' disabled="disabled"' ) . '>'; $r .= '<option value=""' . ( get_query_var('tag') ? '' : ' selected="selected"' ) . '> All </option>'; $tags_slugs = array(); foreach ( $tags as $tag ) { $r .= '<option value="' . urldecode($tag->slug) . '"' . ( in_array($tag->slug, $current_tags) ? ' selected="selected"' : '' ) . '>' . $tag->name . '</option>'; $tags_slugs[] = $tag->slug; } if( $current_tags ) { // current tag(s) should always be in search form tags list. $tt = array(); foreach($current_tags as $ct) if( $ct && !in_array($ct, $tags_slugs) ) $tt[] = $ct; if( !empty($tt) ) foreach($tt as $key=>$t) { $tx = get_term_by('slug', $t, 'post_tag'); $r .= '<option value="' . urldecode($tx->slug) . '" selected="selected">' . $tx->name . '</option>'; } } $r .= '</select>'; } $r .= '</div>'; if($return) return $r; echo $r; } ?> Для ясности: это плагин к WP, вот тут про его чуток написано
-
А еще варианты будут?))
-
Здравствуйте. Подсобите, пожалуйста, в следующем: как убрать onclick $r .= '<input type="button" class="enhanced_search_options_advanced_button" value="Search" onclick="esf_div=document.getElementById(\'' . $dom_id . '\');if(esf_div.style.display==\'none\') esf_div.style.display=\'block\';else esf_div.style.display=\'none\';document.getElementById(\'' . $dom_id . '_cat\').disabled=!document.getElementById(\'' . $dom_id . '_cat\').disabled;document.getElementById(\'' . $dom_id . '_m\').disabled=!document.getElementById(\'' . $dom_id . '_m\').disabled;esf_tag=document.getElementById(\'' . $dom_id . '_tag\');if(esf_tag) esf_tag.disabled=!esf_tag.disabled;return false;" />'; То бишь нужно, что бы элемент был виден всегда, а не только после нажатия на кнопку.