I have a problem with a widget on my wordpress site. Basically it is a Ajax Navigation (filter) sidebar that lets users filter results by clicking the required options. The problem I'm having is that the widget seems to be case sensitive and only shows up if the url case is correct.
e.g.
The widget will not appear if the url is like this:
mysite.com/product-category/mens
but will appears if the url is this (note the capital M):
mysite.com/product-category/Mens
I've tried activatingn mod_spelling in my server and also CheckSpelling in my .htaccess but this hasn't made a difference. I have to manually type in the URL to get the widget to show.
Had anyone any ideas?
Thanks
Chris
Here the code for my widget:
/* 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 ******
To avoid searching through a lot of code I think I need to go down the .htacess route and replace the "/mens" with "/Mens". Can anyone advise if this should fix the problem?
Options +FollowSymLinks -MultiViews
# Turn mod_rewrite on
RewriteEngine On
RewriteBase /
RewriteCond %{QUERY_STRING} ^mens [NC]
RewriteRule ^ %{REQUEST_URI}/Mens [R,L]