Поддержка Проблемы и решения Фильтр категорий

  • Всем привет!
    Всё никак не могу понять где ошибка в коде, почему в ошибке говорится, что он не может переобъявить функцию my_dropdown_cats.
    Код:

    
    
    function my_filter() {
    global $categories;
    
    function my_dropdown_cats ($parent, $level){
    global $categories;
    foreach ($categories as $category) { if ($category->parent == $parent){
         $option .= '<option value="category/'.$category->category_nicename.'/">';
          for ($i=0;$i<$level;$i++){ 
         $option .="--";
        }
      $option .=""; 
        $option .= $category->cat_name;
        $option .= ' ('.$category->category_count.')';
        $option .= '</option>';    
        $option .= my_dropdown_cats($category->cat_ID, $level+1);
        
        }
         
    }
    return $option;
    }
    ?>
    <script type="text/javascript">
    var category = '';
    var tag1 = '';
    var tag2 = '';
    var tag = '';
    var link = '<?php bloginfo('url'); ?>/';
    function filbutton() {  
            if ( tag1 != "" )  { 
        tag = '?tag='+tag1;
        if ( tag2 != "" ) { tag = '?tag='+tag1+'+'+tag2;}
        
        } else {if ( tag2 != "" ) { tag = '?tag='+tag2;}}
            
        location.href = link+category+tag;    
        }    
    </script>
     
     <select name="category" id="cat" onchange='category=this.options[this.selectedIndex].value;'> 
     <option value=""></option> 
     <?php
    
      $categories =  get_categories('pad_counts=1&hide_empty=0&orderby=ID&include=67,72,38');
      
    echo my_dropdown_cats();  
             
     ?>
    </select>
      
    <input id="filter-button" class="button"  type="submit" onClick='filbutton();' value="Отфильтровать"/>
    <?php
    }   

    Ошибка:
    Fatal error: Cannot redeclare my_dropdown_cats() (previously declared in /home/intastelv/public_html/wp-content/themes/trendyblog-theme/functions.php:228) in /home/intastelv/public_html/wp-content/themes/trendyblog-theme/functions.php on line 228

Просмотр 2 ответов — с 1 по 2 (всего 2)
  • Модератор Denis Yanchevskiy

    (@denisco)

    WordPress-разработчик, denisco.pro

    Привет.

    Вынесите объявление функции my_dropdown_cats за пределы функции my_filter.

    Помогли. Спасибо!
    Только теперь появился дубляж фильтра…

    Код:

    function my_dropdown_cats ($parent, $level){
    global $categories;
    foreach ($categories as $category) { if ($category->parent == $parent){
         $option .= '<option value="category/'.$category->category_nicename.'/">';
          for ($i=0;$i<$level;$i++){ 
         $option .="--";
        }
      $option .=""; 
        $option .= $category->cat_name;
        $option .= ' ('.$category->category_count.')';
        $option .= '</option>';    
        $option .= my_dropdown_cats($category->cat_ID, $level+1);
        
        }
         
    }
    return $option;
    }
    function my_filter() {
    global $categories;
    
    ?>
    <script type="text/javascript">
    var category = '';
    var tag1 = '';
    var tag2 = '';
    var tag = '';
    var link = '<?php bloginfo('url'); ?>/';
    function filbutton() {  
            if ( tag1!= "" )  { 
        tag = '?tag='+tag1;
        if ( tag2 != "" ) { tag = '?tag='+tag1+'+'+tag2;}
        
        } else {if ( tag2 != "" ) { tag = '?tag='+tag2;}}
            
        location.href = link+category+tag;    
        }    
    </script>
    
    <!-- Виджет начинается здесь -->
     
     <select name="category" id="cat" onchange='category=this.options[this.selectedIndex].value;'> 
     <option value=""></option> 
     <?php
    
      $categories =  get_categories('pad_counts=1&hide_empty=0&orderby=ID&include=67,72,38');
      
    echo my_dropdown_cats();  
             
     ?>
    </select>
      
    <input id="filter-button" class="button"  type="submit" onClick='filbutton();' value="Отфильтровать"/>
    <?php
    }   
    

    Скриншот

    • Ответ изменён 7 лет, 3 месяца назад пользователем Acme1994.
Просмотр 2 ответов — с 1 по 2 (всего 2)
  • Тема «Фильтр категорий» закрыта для новых ответов.