1

我正在尝试设置一个带有多个复选框过滤选项的 Wordpress 投资组合页面。js 代码和一些 HTML 来自 MixItUp ( http://codepen.io/patrickkunka/pen/iwcap )。

<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>

有谁知道问题是什么?

4

1 回答 1

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>

现在像魅力一样工作:)

于 2016-02-21T18:29:17.747 回答