2016-02-21 64 views
1

我正嘗試設置一個Wordpress組合頁面,其中包含多個複選框過濾選項。 js代碼和一些HTML來自MixItUp(http://codepen.io/patrickkunka/pen/iwcap)。多個複選框過濾器返回服務器錯誤500

<div class="row"> 
    <!-- Filter categories --> 
    <div class="col-md-4">  
     <form class="controls" id="Filters"> 
      <?php 
      $count1 = 0; 
      // all products of category with sortable 
      function enc8($c){ return utf8_encode($c); } 
      $terms1 = get_terms(product_group); 
      $count1 = count($terms1); 
      echo '<fieldset>'; 
       if ($count1 > 0){ 
         foreach ($terms1 as $term1) { 
          $termname1 = strtolower($term1->name); 
          $termname1 = str_replace(array(enc8('ä'),enc8('Ä'),enc8('ö'),enc8('Ö'),enc8('ü'),enc8('Ü'),enc8('ß'),' &amp; ',' '),array('ae','Ae','oe','Oe','ue','Ue','ss','-','-'),$termname1); 
          echo '<div class="checkbox"><input type="checkbox" value=".'.$termname1.'"/><label> '.$term1->name.'</label></div>'; 
         } 
       } 
      echo '</fieldset>'; 
      ?> 
      <a class="btn btn-small btn-default" id="Reset">Reset</a> 
     </form> 
    </div> 
    <div class="col-md-4">  
     <form class="controls" id="Filters"> 
      <?php 
      $count2 = 0;  
      // all products of category with sortable 
      function enc8($c){ return utf8_encode($c); } 
      $terms2 = get_terms(product_category); 
      $count2 = count($terms2); 
      echo '<fieldset>'; 
       if ($count2 > 0){ 
         foreach ($terms2 as $term2) { 
          $termname2 = strtolower($term2->name); 
          $termname2 = str_replace(array(enc8('ä'),enc8('Ä'),enc8('ö'),enc8('Ö'),enc8('ü'),enc8('Ü'),enc8('ß'),' &amp; ',' '),array('ae','Ae','oe','Oe','ue','Ue','ss','-','-'),$termname2); 
          echo '<div class="checkbox"><input type="checkbox" value=".'.$termname2.'"/><label> '.$term2->name.'</label></div>'; 
         } 
       } 
      echo '</fieldset>'; 
      ?> 
      <a class="btn btn-small btn-default" id="Reset">Reset</a> 
     </form> 
    </div> 

第一個分類篩選器(product_group)工作得很好。但是,當我添加第二個(product_category)時,頁面部分崩潰並且Chrome返回以下錯誤消息:無法加載資源:服務器響應的狀態爲500(內部服務器錯誤)。

的HTML輸出如下:

<div class="col-md-4">  
    <form class="controls" id="Filters"> 
     <fieldset> 
      <div class="checkbox"> 
       <input type="checkbox" value=".class01"><label> Class01</label> 
      </div> 
      <div class="checkbox"> 
       <input type="checkbox" value=".class02"><label> Class02</label> 
      </div> 
      <div class="checkbox"> 
       <input type="checkbox" value=".class03"><label> Class03</label> 
      </div> 
     </fieldset> 
     <a class="btn btn-small btn-default" id="Reset">Reset</a> 
    </form> 
</div> 
<div class="col-md-4">  
    <form class="controls" id="Filters"> 
    <!-- Performance optimized by W3 Total Cache. Learn more: http://www.w3-edge.com/wordpress-plugins/ 

    Page Caching using disk: enhanced (User is logged in) 

    Served from: mydomain.org @ 2016-02-21 17:03:37 by W3 Total Cache --> 
    </form> 
</div> 

有沒有人有一個想法是什麼問題?

+0

多少複選框有:兩個濾波器結合到一個單一的功能,有點改名一些變量進行解決?這是不可能的,但是你有可能擊中超過1k個物品嗎?什麼值被提交給服務器? – gabe3886

+0

目前有六個複選框用於第一個過濾器(我將樣本的輸出減少到三個)。未來每個人將有超過20人的可能性不大。 – friiitzdesign

回答

0

最後,我明白了。問題是以下功能

function enc8($c){ return utf8_encode($c); } 

在代碼中是兩次。現在

<form class="controls" id="Filters"> 
    <?php 
    $countgroups = 0; 
    $countcats = 0; 

    function enc8($c){ return utf8_encode($c); } 

    $groups = get_terms(product_group); 
    $countgroups = count($groups);       
    $cats = get_terms(product_category); 
    $countcats = count($cats); 

    echo '<fieldset class="groups"><h4>Produktgruppen</h4>'; 
     if ($countgroups > 0){ 
       foreach ($groups as $group) { 
        $groupname = strtolower($group->name); 
        $groupname = str_replace(array(enc8('ä'),enc8('Ä'),enc8('ö'),enc8('Ö'),enc8('ü'),enc8('Ü'),enc8('ß'),' &amp; ',' '),array('ae','Ae','oe','Oe','ue','Ue','ss','-','-'),$groupname); 
        echo '<div class="checkbox"><input type="checkbox" value=".'.$groupname.'"/><label>'.$group->name.'</label></div>'; 
       } 
     } 
    echo '</fieldset>'; 
    echo '<fieldset class="cats"><h4>Produktkategorien</h4>'; 
     if ($countcats > 0){ 
       foreach ($cats as $cat) { 
        $catname = strtolower($cat->name); 
        $catname = str_replace(array(enc8('ä'),enc8('Ä'),enc8('ö'),enc8('Ö'),enc8('ü'),enc8('Ü'),enc8('ß'),' &amp; ',' '),array('ae','Ae','oe','Oe','ue','Ue','ss','-','-'),$catname); 
        echo '<div class="checkbox"><input type="checkbox" value=".'.$catname.'"/><label>'.$cat->name.'</label></div>'; 
       } 
     } 
    echo '</fieldset>'; 
    ?> 
    <a class="btn btn-small btn-default" id="Reset">Reset</a> 
</form> 

就像一個魅力:)

相關問題