2014-10-28 27 views
0

我的WordPress插件上有一個小部件存在問題。基本上它是一個Ajax導航(過濾器)側邊欄,讓用戶通過點擊所需的選項來過濾結果。我遇到的問題是小部件似乎區分大小寫,只有在url案例正確時才顯示。Wordpress小部件只有在URL格式正確的情況下才有效

例如

如果URL是這樣的部件將不會出現:

mysite.com/product-category/mens

但如果URL是這樣的(注意是大寫的M)將出現:

mysite.com/product-category/Mens

我試過在我的服務器中激活mod_spelling,而且在我的.htaccess中也是CheckSpelling,但這沒有什麼區別。我必須手動輸入網址才能顯示小部件。

有沒有人有任何想法?

感謝

克里斯

這裏我插件的代碼:

/* FIX TO WOOCOMMERCE 2.1 */ 

    if (function_exists('wc_attribute_taxonomy_name')) { 

     $taxonomy = wc_attribute_taxonomy_name($instance['attribute']); 

    } else { 

     $taxonomy = $woocommerce->attribute_taxonomy_name($instance['attribute']); 

    } 

    if (! taxonomy_exists($taxonomy)) 

     return; 

    $terms = yit_get_terms($terms_type_list, $taxonomy); 


    if (count($terms) > 0) { 

     ob_start(); 

     $found = false; 

     echo $before_widget . $before_title . $title . $after_title; 

     // Force found when option is selected - do not force found on taxonomy attributes 

     if (! $_attributes_array || ! is_tax($_attributes_array)) 


      if (is_array($_chosen_attributes) && array_key_exists($taxonomy, $_chosen_attributes)) 

       $found = true; 

     if ($display_type == 'list') { 



      // List display 

      echo "<ul class='yith-wcan-list yith-wcan'>"; 


      $topten = array_slice($terms,0,10); 
      usort($topten,"cmp"); 
      $terms = array_slice($terms,10); 
      usort($terms,"cmp"); 
      $terms = array_merge((array)$topten,(array)$terms); 


      foreach ($terms as $term) { 


       // Get count based on current view - uses transients 

       $transient_name = 'wc_ln_count_' . md5(sanitize_key($taxonomy) . sanitize_key($term->term_id)); 

       if (false === ($_products_in_term = get_transient($transient_name))) { 

        $_products_in_term = get_objects_in_term($term->term_id, $taxonomy); 

        set_transient($transient_name, $_products_in_term); 

       } 

       $option_is_set = (isset($_chosen_attributes[ $taxonomy ]) && in_array($term->term_id, $_chosen_attributes[ $taxonomy ]['terms'])); 

       // If this is an AND query, only show options with count > 0 

       if ($query_type == 'and') { 

        $count = sizeof(array_intersect($_products_in_term, $woocommerce->query->filtered_product_ids)); 

        // skip the term for the current archive 

        if ($current_term == $term->term_id) 

         continue; 

        if ($count > 0 && $current_term !== $term->term_id) 

         $found = true; 

        if (($terms_type_list != 'hierarchical' || ! yit_term_has_child($term, $taxonomy)) && $count == 0 && ! $option_is_set){ 

         continue; 

        } 

       // If this is an OR query, show all options so search can be expanded 

       } else { 

        // skip the term for the current archive 

        if ($current_term == $term->term_id) 

         continue; 

        $count = sizeof(array_intersect($_products_in_term, $woocommerce->query->unfiltered_product_ids)); 

        if ($count > 0) 

         $found = true; 

       } 

       $arg = 'filter_' . sanitize_title($instance['attribute']); 

       $current_filter = (isset($_GET[ $arg ])) ? explode(',', $_GET[ $arg ]) : array(); 

       if (! is_array($current_filter)) 

        $current_filter = array(); 

       $current_filter = array_map('esc_attr', $current_filter); 

       if (! in_array($term->term_id, $current_filter)) 

        $current_filter[] = $term->term_id; 

       // Base Link decided by current page 

       if (defined('SHOP_IS_ON_FRONT')) { 

        $link = home_url(); 

       } elseif (is_post_type_archive('product') || is_page(function_exists('wc_get_page_id') ? wc_get_page_id('shop') : woocommerce_get_page_id('shop'))) { 

        $link = get_post_type_archive_link('product'); 

       } else { 

        $link = get_term_link(get_query_var('term'), get_query_var('taxonomy')); 

       } 

***** UPDATE ******

爲了避免通過大量搜索的代碼我想我需要沿着.htacess路線,並用「/ Mens」替換「/ mens」。任何人都可以建議,如果這應該解決這個問題?

Options +FollowSymLinks -MultiViews 
# Turn mod_rewrite on 
RewriteEngine On 
RewriteBase/

RewriteCond %{QUERY_STRING} ^mens [NC] 
RewriteRule^%{REQUEST_URI}/Mens [R,L] 
+0

什麼是對插件的代碼是什麼樣子? – rnevius 2014-10-28 10:07:51

+0

該腳本很長,我會編輯原文,我認爲是相關的 – Walshie1987 2014-10-28 10:12:36

+0

你能用這樣的插件來實現這樣的功能嗎:https://wordpress.org/plugins/dynamic-widgets/? – 2014-10-28 10:19:00

回答

-1

不知道你的代碼是什麼樣子 但是如果你使用類似$ _GET [「關鍵」]讓「男裝」出來的網址,你可以使用PHP函數ucfirst();

對於JavaScript,您將需要製作自己的功能。 我用這個功能,我從另一個計算器問題了:

function capitaliseFirstLetter(string) 
{ 
    return string.charAt(0).toUpperCase() + string.slice(1); 
} 

How do I make the first letter of a string uppercase in JavaScript?

+0

我實際上已經考慮過並且UCFirst失敗了,但是我發現自己正在編輯我想要避免的wordpress核心文件。謝謝你的信息。 – Walshie1987 2014-10-28 10:25:04

相關問題