【问题标题】:Wordpress portfolio filter is not working with cyrillic categories namesWordpress 投资组合过滤器不适用于西里尔文类别名称
【发布时间】:2018-03-14 08:48:20
【问题描述】:

在我的网站上,投资组合过滤器不适用于 西里尔 类别名称,但它可以完美地处理 latin 字母。

在我的 wordpress 网站的投资组合页面上,当我选择只显示 3 个类别时,我会用西里尔文名称(Сватби、Портрети)或数字(2017;2018;等)命名它们不出现。

但是当我改用拉丁字母时,一切都会显示出来。或者当我点击显示所有类别时,也没有问题。

<?php



    if( $page_title_type == '1' || $page_title_type == '2' )
    {
        ?><h5><?php the_title();?></h5><?php
    }


    $portfolio_category = get_page_setting_property( 'portfolio_category', '' );
    $portfolio_categories = get_categories(array(
        'taxonomy' => 'project_cat',
    ));

    if($portfolio_category == '')
    {
        $portfolio_filter_enabled = true;
    }
    else
    {
        $portfolio_filter_comma = strpos($portfolio_category, ',');
        $portfolio_filter_enabled = $portfolio_filter_comma !== false && $portfolio_filter_comma > 0;
    }

    if( $portfolio_filter_enabled && count( $portfolio_categories ) > 1 )
    {
        ?>
        <div class="filter">
            <i class="category-icon"></i>
            <ul class="filter-ctrl">
                <li class="active" data-filter="*"><i><?php esc_html_e('Show All', 'mytheme'); ?></i></li>
        <?php

        if($portfolio_category == '')
        {
            foreach($portfolio_categories as $cat)
            {
                ?><li data-filter=".filter-cat-<?php echo esc_attr($cat->term_id); ?>"><i><?php echo esc_html($cat->name); ?></i></li><?php
            }
        }
        else
        {
            $cats = explode(',', $portfolio_category);
            foreach($portfolio_categories as $cat)
            {
                if(in_array($cat->name, $cats))
                {
                    ?><li data-filter=".filter-cat-<?php echo esc_attr($cat->term_id); ?>"><i><?php echo esc_html($cat->name); ?></i></li><?php
                }
            }
        }
        ?>
            </ul>
        </div>


        <?php
    }

    ?>
</div>

【问题讨论】:

    标签: wordpress categories cyrillic


    【解决方案1】:

    问题出在 JS 中,以便快速轻松地修复替换:

    var filterValue = jQuery(this).attr('data-filter');
    

    ->

    var filterValue = jQuery(this).attr('data-filter').replace(/%/g, '\\%');
    

    为任何角色最终解决此问题的正确方法是使用https://developer.mozilla.org/en-US/docs/Web/API/CSS/escape 或等效的垫片,但是以上应该就足够了。

    【讨论】:

      猜你喜欢
      • 2012-12-21
      • 1970-01-01
      • 2015-05-19
      • 1970-01-01
      • 1970-01-01
      • 2016-04-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多