我的wordpress网站上的一个小部件有问题。基本上,它是一个Ajax导航(过滤器)侧边栏,允许用户通过单击所需的选项来过滤结果。我遇到的问题是,这个小部件似乎区分大小写,只有在url大小写正确的情况下才会显示。
例如
如果url如下所示,则小部件不会出现:
mysite.com/product-category/mens
但如果url是这样的(注意大写M),则会出现:
mysite.com/product-category/Mens
我试过在我的服务器中激活mod_spelling,也在.htaccess中激活CheckSpelling,但这并没有什么不同。我必须手动键入URL才能显示小部件。
有人有什么想法吗?
感谢
Chris
这里是我的小部件的代码:
/* 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') );
}
*****更新******
为了避免搜索大量代码,我想我需要走.htaccess路线,用"/mens"替换"/mens"。有人能建议一下这是否能解决问题吗?
Options +FollowSymLinks -MultiViews
# Turn mod_rewrite on
RewriteEngine On
RewriteBase /
RewriteCond %{QUERY_STRING} ^mens [NC]
RewriteRule ^ %{REQUEST_URI}/Mens [R,L]
对于javascript,您需要创建自己的函数。我使用了这个函数,这是我从另一个stackoverflow问题中得到的:
function capitaliseFirstLetter(string)
{
return string.charAt(0).toUpperCase() + string.slice(1);
}
如何在JavaScript中使字符串的第一个字母大写?