function thematic_comment_class($print = true)
 {
     global $comment, $post, $thematic_comment_alt, $comment_depth, $comment_thread_alt;
     // Collects the comment type (comment, trackback),
     $c = array($comment->comment_type);
     // Counts trackbacks (t[n]) or comments (c[n])
     if ($comment->comment_type == 'comment') {
         $c[] = "c{$thematic_comment_alt}";
     } else {
         $c[] = "t{$thematic_comment_alt}";
     }
     // If the comment author has an id (registered), then print the log in name
     if ($comment->user_id > 0) {
         $user = get_userdata($comment->user_id);
         // For all registered users, 'byuser'; to specificy the registered user, 'commentauthor+[log in name]'
         $c[] = 'byuser comment-author-' . sanitize_title_with_dashes(strtolower($user->user_login));
         // For comment authors who are the author of the post
         if ($comment->user_id === $post->post_author) {
             $c[] = 'bypostauthor';
         }
     }
     // If it's the other to the every, then add 'alt' class; collects time- and date-based classes
     thematic_date_classes(mysql2date('U', $comment->comment_date), $c, 'c-');
     if (++$thematic_comment_alt % 2) {
         $c[] = 'alt';
     }
     // Comment depth
     $c[] = "depth-{$comment_depth}";
     // Separates classes with a single space, collates classes for comment LI
     $c = join(' ', apply_filters('comment_class', $c));
     // Available filter: comment_class
     // Tada again!
     return $print ? print $c : $c;
 }
Example #2
0
/**
 *
 * Generates semantic classes for BODY element
 */
function bb_base_body_class($print = true)
{
    global $wp_query, $current_user;
    // It's surely a WordPress blog, right?
    $c = array('wordpress');
    // Applies the time- and date-based classes (below) to BODY element
    thematic_date_classes(time(), $c);
    // Generic semantic classes for what type of content is displayed
    is_front_page() ? $c[] = 'home' : null;
    // For the front page, if set
    is_home() ? $c[] = 'blog' : null;
    // For the blog posts page, if set
    is_archive() ? $c[] = 'archive' : null;
    is_date() ? $c[] = 'date' : null;
    is_search() ? $c[] = 'search' : null;
    is_paged() ? $c[] = 'paged' : null;
    is_page() ? $c[] = 'page' : null;
    is_single() ? $c[] = 'post' : null;
    is_attachment() ? $c[] = 'attachment' : null;
    is_404() ? $c[] = 'four04' : null;
    // CSS does not allow a digit as first character
    is_tax() ? $c[] = 'taxonomy' : null;
    // Special classes for BODY element when a singular post
    if (is_singular()) {
        $c[] = 'singular';
    }
    if (is_single()) {
        $postID = $wp_query->post->ID;
        the_post();
        $c[] = 'slug-' . $wp_query->post->post_name;
        $c[] = 'single postid-' . $postID;
        if (isset($wp_query->post->post_date)) {
            thematic_date_classes(mysql2date('U', $wp_query->post->post_date), $c, 's-');
        }
        // Adds category classes for each category on single posts
        if ($cats = get_the_category()) {
            foreach ($cats as $cat) {
                $c[] = 's-category-' . $cat->slug;
            }
        }
        // Adds tag classes for each tags on single posts
        if ($tags = get_the_tags()) {
            foreach ($tags as $tag) {
                $c[] = 's-tag-' . $tag->slug;
            }
        }
        /* Adds taxonomy classes for each tax on single posts - Not working right **
        		$taxonomy = get_taxonomy( get_query_var( 'taxonomy' )); 
        		$tax = $wp_query->get_queried_object();
        		if ( $tax = $wp_query->get_queried_object() )
        			foreach ( $tax as $taxi ) $c[] = 's-tax-' . $taxi->slug;
        		*/
        // Adds MIME-specific classes for attachments
        if (is_attachment()) {
            $mime_type = get_post_mime_type();
            $mime_prefix = array('application/', 'image/', 'text/', 'audio/', 'video/', 'music/');
            $c[] = 'attach-id-' . $postID . ' attach-' . str_replace($mime_prefix, "", "{$mime_type}");
        }
        // Adds author class for the post author
        $c[] = 's-author-' . sanitize_title_with_dashes(strtolower(get_the_author_meta('display_name')));
        rewind_posts();
        if (has_excerpt()) {
            $c[] = 's-has-excerpt';
        }
        if (pings_open()) {
            $c[] = 's-pings-open';
        }
        if (comments_open()) {
            $c[] = 's-comments-open';
        }
        if ($post->post_password) {
            $c[] = 's-protected';
        }
        if (is_sticky()) {
            $c[] = 's-sticky';
        }
    } elseif (is_author()) {
        $author = $wp_query->get_queried_object();
        $c[] = 'author';
        $c[] = 'author-' . $author->user_nicename;
    } elseif (is_category()) {
        $cat = $wp_query->get_queried_object();
        $c[] = 'category';
        $c[] = 'category-' . $cat->slug;
    } elseif (is_tag()) {
        $tags = $wp_query->get_queried_object();
        $c[] = 'tag';
        $c[] = 'tag-' . $tags->slug;
    } elseif (is_page()) {
        $pageID = $wp_query->post->ID;
        $page_children = wp_list_pages("child_of={$pageID}&echo=0");
        the_post();
        $c[] = 'slug-' . $wp_query->post->post_name;
        $c[] = 'page pageid-' . $pageID;
        $c[] = 'page-author-' . sanitize_title_with_dashes(strtolower(get_the_author_meta('login')));
        // Checks to see if the page has children and/or is a child page; props to Adam
        if ($page_children) {
            $c[] = 'page-parent';
        }
        if ($wp_query->post->post_parent) {
            $c[] = 'page-child parent-pageid-' . $wp_query->post->post_parent;
        }
        if (has_excerpt()) {
            $c[] = 'page-has-excerpt';
        }
        if (comments_open()) {
            $c[] = 'page-comments-open';
        }
        if (pings_open()) {
            $c[] = 'page-pings-open';
        }
        if ($post->post_password) {
            $c[] = 'page-protected';
        }
        if (is_page_template() & !is_page_template('default')) {
            $c[] = 'page-template page-template-' . str_replace('.php', '-php', get_post_meta($pageID, '_wp_page_template', true));
        }
        rewind_posts();
    } elseif (is_search()) {
        the_post();
        if (have_posts()) {
            $c[] = 'search-results';
        }
        rewind_posts();
    }
    if ($current_user->ID) {
        $c[] = 'loggedin';
    }
    // Paged classes; for 'page X' classes of index, single, etc.
    if ((($page = $wp_query->get('paged')) || ($page = $wp_query->get('page'))) && $page > 1) {
        $page = intval($page);
        // make sure $page is an integer
        $c[] = 'paged-' . $page;
        if (is_single()) {
            $c[] = 'single-paged-' . $page;
        } elseif (is_page()) {
            $c[] = 'page-paged-' . $page;
        } elseif (is_tag()) {
            $c[] = 'tag-paged-' . $page;
        } elseif (is_tax()) {
            $c[] = 'tax-paged-' . $page;
        } elseif (is_date()) {
            $c[] = 'date-paged-' . $page;
        } elseif (is_author()) {
            $c[] = 'author-paged-' . $page;
        } elseif (is_search()) {
            $c[] = 'search-paged-' . $page;
        } elseif (is_category()) {
            $c[] = 'category-paged-' . $page;
        }
    }
    // A little Browser detection shall we?
    $browser = $_SERVER['HTTP_USER_AGENT'];
    // Mac, PC ...or Linux
    if (preg_match("/Mac/", $browser)) {
        $c[] = 'mac';
    } elseif (preg_match("/Windows/", $browser)) {
        $c[] = 'windows';
    } elseif (preg_match("/Linux/", $browser)) {
        $c[] = 'linux';
    } else {
        $c[] = 'unknown-os';
    }
    // Checks browsers in this order: Chrome, Safari, Opera, MSIE, FF
    if (preg_match("/Chrome/", $browser)) {
        $c[] = 'chrome';
        /* CHROME */
        preg_match("/Chrome\\/(\\d.\\d)/si", $browser, $matches);
        $ch_version = 'ch' . str_replace('.', '-', $matches[1]);
        $c[] = $ch_version;
    } elseif (preg_match("/Safari/", $browser)) {
        $c[] = 'safari';
        /* SAFARI */
        preg_match("/Version\\/(\\d.\\d)/si", $browser, $matches);
        $sf_version = 'sf' . str_replace('.', '-', $matches[1]);
        $c[] = $sf_version;
    } elseif (preg_match("/Opera/", $browser)) {
        $c[] = 'opera';
        /* OPERA */
        preg_match("/Opera\\/(\\d.\\d)/si", $browser, $matches);
        $op_version = 'op' . str_replace('.', '-', $matches[1]);
        $c[] = $op_version;
    } elseif (preg_match("/MSIE/", $browser)) {
        $c[] = 'msie';
        /* IE */
        if (preg_match("/MSIE 6.0/", $browser)) {
            $c[] = 'ie6';
        } elseif (preg_match("/MSIE 7.0/", $browser)) {
            $c[] = 'ie7';
        } elseif (preg_match("/MSIE 8.0/", $browser)) {
            $c[] = 'ie8';
        }
        /* IE 8.0 */
    } elseif (preg_match("/Firefox/", $browser) && preg_match("/Gecko/", $browser)) {
        $c[] = 'firefox';
        /* FIREFOX */
        preg_match("/Firefox\\/(\\d)/si", $browser, $matches);
        $ff_version = 'ff' . str_replace('.', '-', $matches[1]);
        $c[] = $ff_version;
    } else {
        $c[] = 'unknown-browser';
        /* UNKNOWN */
    }
    // Separates classes with a single space, collates classes for BODY
    $c = join(' ', apply_filters('body_class', $c));
    // Available filter: body_class
    return $print ? print $c : $c;
}
Example #3
0
function bodystyle($print = true)
{
    global $wp_query, $current_user;
    // Generic semantic classes for what type of content is displayed
    is_front_page() ? $c[] = 'home' : null;
    // For the front page, if set
    is_home() ? $c[] = 'blog' : null;
    // For the blog posts page, if set
    is_archive() ? $c[] = 'archive' : null;
    is_date() ? $c[] = 'by-date' : null;
    is_search() ? $c[] = 'search' : null;
    is_paged() ? $c[] = 'paged' : null;
    is_attachment() ? $c[] = 'attachment' : null;
    is_404() ? $c[] = 'four04' : null;
    // CSS does not allow a digit as first character
    // Special classes for BODY element when a single post
    if (is_single()) {
        $postID = $wp_query->post->ID;
        the_post();
        // Adds 'single' class and class with the post ID
        $c[] = 'single postid-' . $postID;
        // Adds classes for the month, day, and hour when the post was published
        if (isset($wp_query->post->post_date)) {
            thematic_date_classes(mysql2date('U', $wp_query->post->post_date), $c, '');
        }
        // Adds category classes for each category on single posts
        if ($cats = get_the_category()) {
            foreach ($cats as $cat) {
                $c[] = 'category-' . $cat->slug;
            }
        }
        // Adds tag classes for each tags on single posts
        if ($tags = get_the_tags()) {
            foreach ($tags as $tag) {
                $c[] = 'tag-' . $tag->slug;
            }
        }
        // Adds MIME-specific classes for attachments
        if (is_attachment()) {
            $mime_type = get_post_mime_type();
            $mime_prefix = array('application/', 'image/', 'text/', 'audio/', 'video/', 'music/');
            $c[] = 'attachmentid-' . $postID . ' attachment-' . str_replace($mime_prefix, "", "{$mime_type}");
        }
        // Adds author class for the post author
        $c[] = 'author-' . sanitize_title_with_dashes(strtolower(get_the_author_login()));
        rewind_posts();
    } elseif (is_author()) {
        $author = $wp_query->get_queried_object();
        $c[] = 'author';
        $c[] = 'author-' . $author->user_nicename;
    } elseif (is_category()) {
        $cat = $wp_query->get_queried_object();
        $c[] = 'category';
        $c[] = 'category-' . $cat->slug;
    } elseif (is_tag()) {
        $tags = $wp_query->get_queried_object();
        $c[] = 'tag';
        $c[] = 'tag-' . $tags->slug;
    } elseif (is_page()) {
        $pageID = $wp_query->post->ID;
        $page_children = wp_list_pages("child_of={$pageID}&echo=0");
        the_post();
        $c[] = 'page pageid-' . $pageID;
        $c[] = 'page-author-' . sanitize_title_with_dashes(strtolower(get_the_author('login')));
        // Checks to see if the page has children and/or is a child page; props to Adam
        if ($page_children) {
            $c[] = 'page-parent';
        }
        if ($wp_query->post->post_parent) {
            $c[] = 'page-child parent-pageid-' . $wp_query->post->post_parent;
        }
        if (is_page_template()) {
            // Hat tip to Ian, themeshaper.com
            $c[] = 'page-template page-template-' . str_replace('.php', '-php', get_post_meta($pageID, '_wp_page_template', true));
        }
        rewind_posts();
    } elseif (is_search()) {
        the_post();
        if (have_posts()) {
            $c[] = 'search-results';
        } else {
            $c[] = 'search-no-results';
        }
        rewind_posts();
    }
    // Paged classes; for 'page X' classes of index, single, etc.
    if ((($page = $wp_query->get('paged')) || ($page = $wp_query->get('page'))) && $page > 1) {
        $c[] = 'paged-' . $page;
        if (is_single()) {
            $c[] = 'single-paged-' . $page;
        } elseif (is_page()) {
            $c[] = 'page-paged-' . $page;
        } elseif (is_category()) {
            $c[] = 'category-paged-' . $page;
        } elseif (is_tag()) {
            $c[] = 'tag-paged-' . $page;
        } elseif (is_date()) {
            $c[] = 'date-paged-' . $page;
        } elseif (is_author()) {
            $c[] = 'author-paged-' . $page;
        } elseif (is_search()) {
            $c[] = 'search-paged-' . $page;
        }
    }
    // Separates classes with a single space, collates classes for BODY
    $c = join(' ', apply_filters('body_class', $c));
    // Available filter: body_class
    // And tada!
    return $print ? print $c : $c;
}
Example #4
0
/** 
 * Adds classes to commment li's using the WordPress comment_class filter
 *
 * @since 1.0
 */
function thematic_add_comment_class($classes)
{
    global $comment, $post;
    // Add time and date based classes
    thematic_date_classes(mysql2date('U', $comment->comment_date), $classes, 'thm-c-');
    // Do not duplicate values
    return array_unique($classes);
}