WordPress.org

Make WordPress Core

Changeset 11433


Ignore:
Timestamp:
05/22/09 17:44:26 (6 years ago)
Author:
westi
Message:

Introduce sanitise_css_classname() and use it to give categories, tags, users etc meaningful classnames where possible. Falls back to the id if not. Fixes #8446.

Location:
trunk/wp-includes
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/wp-includes/comment-template.php

    r11383 r11433  
    295295        // For all registered users, 'byuser' 
    296296        $classes[] = 'byuser'; 
    297         $classes[] = 'comment-author-' . $comment->user_id; 
     297        $classes[] = 'comment-author-' . sanitise_css_classname($user->user_nicename, $comment->user_id); 
    298298        // For comment authors who are the author of the post 
    299299        if ( $post = get_post($post_id) ) { 
  • trunk/wp-includes/formatting.php

    r11414 r11433  
    717717        return false; 
    718718    return $orderby; 
     719} 
     720 
     721/** 
     722 * Santises a css classname to ensure it only contains valid characters 
     723 *  
     724 * Strips the classname down to A-Z,a-z,0-9,'-' if this results in an empty 
     725 * string then it will return the alternative value supplied. 
     726 *   
     727 * @param string $classname The classname to be sanitised 
     728 * @param string $alternative The value to return if the sanitisation end's up as an empty string. 
     729 * @return string The sanitised value 
     730 */ 
     731function sanitise_css_classname($classname, $alternative){ 
     732    //Strip out any % encoded octets 
     733    $sanitised = preg_replace('|%[a-fA-F0-9][a-fA-F0-9]|', '', $classname); 
     734     
     735    //Limit to A-Z,a-z,0-9,'-' 
     736    $sanitised = preg_replace('/[^A-Za-z0-9-]/', '', $sanitised); 
     737     
     738    if ('' == $sanitised) 
     739        $sanitised = $alternative; 
     740     
     741    return apply_filters('sanitise_css_classname',$sanitised, $classname, $alternative);     
    719742} 
    720743 
  • trunk/wp-includes/post-template.php

    r11398 r11433  
    325325    // Categories 
    326326    foreach ( (array) get_the_category($post->ID) as $cat ) { 
    327         if ( empty($cat->cat_ID ) ) 
     327        if ( empty($cat->slug ) ) 
    328328            continue; 
    329         $classes[] = 'category-' . $cat->cat_ID; 
     329        $classes[] = 'category-' . sanitise_css_classname($cat->slug, $cat->cat_ID); 
    330330    } 
    331331 
    332332    // Tags 
    333333    foreach ( (array) get_the_tags($post->ID) as $tag ) { 
    334         if ( empty($tag->term_id ) ) 
     334        if ( empty($tag->slug ) ) 
    335335            continue; 
    336         $classes[] = 'tag-' . $tag->term_id; 
     336        $classes[] = 'tag-' . sanitise_css_classname($tag->slug, $tag->term_id); 
    337337    } 
    338338 
     
    408408            $author = $wp_query->get_queried_object(); 
    409409            $classes[] = 'author'; 
    410             $classes[] = 'author-' . $author->user_id; 
     410            $classes[] = 'author-' . sanitise_css_classname($author->user_nicename , $author->user_id); 
    411411        } elseif ( is_category() ) { 
    412412            $cat = $wp_query->get_queried_object(); 
    413413            $classes[] = 'category'; 
    414             $classes[] = 'category-' . $cat->cat_ID; 
     414            $classes[] = 'category-' . sanitise_css_classname($cat->slug, $cat->cat_ID); 
    415415        } elseif ( is_tag() ) { 
    416416            $tags = $wp_query->get_queried_object(); 
    417417            $classes[] = 'tag'; 
    418             $classes[] = 'tag-' . $tags->term_id; 
     418            $classes[] = 'tag-' . sanitise_css_classname($tags->slug, $tags->term_id); 
    419419        } 
    420420    } elseif ( is_page() ) { 
Note: See TracChangeset for help on using the changeset viewer.