2010-02-07 11:16:26 -05:00
< ? php
2010-03-29 18:03:15 -04:00
/**
* TwentyTen functions and definitions
*
* Sets up the theme and provides some helper functions used
* in other parts of the theme . All functions are pluggable
*
* @ package WordPress
* @ subpackage Twenty Ten
* @ since 3.0 . 0
*/
2010-02-07 11:16:26 -05:00
2010-03-29 18:03:15 -04:00
/**
* Set the content width based on the Theme CSS . Can be overriden
*
* Used in attachment . php to set the width of images . Should
* be equal to the width set for . onecolumn #content in style.css
*/
2010-02-14 16:39:20 -05:00
if ( ! isset ( $content_width ) )
2010-02-25 03:56:19 -05:00
$content_width = 640 ;
2010-02-14 16:39:20 -05:00
if ( ! function_exists ( 'twentyten_init' ) ) :
2010-03-29 18:03:15 -04:00
/**
* Set up defaults for our theme .
*
* Sets up theme defaults and tells wordpress that this is a
* theme that will take advantage of Post Thumbnails , Custom
* Background , Nav Menus and automatic feed links . To
* override any of the settings in a child theme , create your
* own twentyten_init function
*
* @ uses add_theme_support ()
*/
2010-02-14 16:39:20 -05:00
function twentyten_init () {
2010-03-29 18:03:15 -04:00
// This theme allows users to set a custom background
add_custom_background ();
// This theme styles the visual editor with editor-style.css to match the theme style.
add_editor_style ();
// This theme needs post thumbnails
add_theme_support ( 'post-thumbnails' );
// This theme uses wp_nav_menu()
add_theme_support ( 'nav-menus' );
// We'll be using them for custom header images on posts and pages
// so we want them to be 940 pixels wide by 198 pixels tall (larger images will be auto-cropped to fit)
set_post_thumbnail_size ( HEADER_IMAGE_WIDTH , HEADER_IMAGE_HEIGHT , true );
// Add default posts and comments RSS feed links to head
add_theme_support ( 'automatic-feed-links' );
// Make theme available for translation
// Translations can be filed in the /languages/ directory
load_theme_textdomain ( 'twentyten' , TEMPLATEPATH . '/languages' );
$locale = get_locale ();
$locale_file = TEMPLATEPATH . " /languages/ $locale .php " ;
if ( is_readable ( $locale_file ) )
require_once ( $locale_file );
2010-02-14 16:39:20 -05:00
// Your Changeable header business starts here
// No CSS, just IMG call
2010-03-16 16:17:22 -04:00
define ( 'HEADER_TEXTCOLOR' , '' );
define ( 'HEADER_IMAGE' , '%s/images/headers/forestfloor.jpg' ); // %s is theme dir uri
2010-03-29 18:03:15 -04:00
// Add a filter to twentyten_header_image_width and twentyten_header_image_height to change these values
2010-02-14 16:39:20 -05:00
define ( 'HEADER_IMAGE_WIDTH' , apply_filters ( 'twentyten_header_image_width' , 940 ) );
define ( 'HEADER_IMAGE_HEIGHT' , apply_filters ( 'twentyten_header_image_height' , 198 ) );
2010-03-29 18:03:15 -04:00
2010-02-14 16:39:20 -05:00
define ( 'NO_HEADER_TEXT' , true );
add_custom_image_header ( '' , 'twentyten_admin_header_style' );
// and thus ends the changeable header business
2010-03-29 18:03:15 -04:00
// Default custom headers. %s is a placeholder for the theme template directory
2010-03-16 16:17:22 -04:00
register_default_headers ( array (
'berries' => array (
'url' => '%s/images/headers/berries.jpg' ,
'thumbnail_url' => '%s/images/headers/berries-thumbnail.jpg' ,
2010-03-16 19:11:30 -04:00
'description' => __ ( 'Berries' , 'twentyten' )
2010-03-16 16:17:22 -04:00
),
'cherryblossom' => array (
'url' => '%s/images/headers/cherryblossoms.jpg' ,
'thumbnail_url' => '%s/images/headers/cherryblossoms-thumbnail.jpg' ,
2010-03-16 19:11:30 -04:00
'description' => __ ( 'Cherry Blossoms' , 'twentyten' )
2010-03-16 16:17:22 -04:00
),
'concave' => array (
'url' => '%s/images/headers/concave.jpg' ,
'thumbnail_url' => '%s/images/headers/concave-thumbnail.jpg' ,
2010-03-16 19:11:30 -04:00
'description' => __ ( 'Concave' , 'twentyten' )
2010-03-16 16:17:22 -04:00
),
'fern' => array (
'url' => '%s/images/headers/fern.jpg' ,
'thumbnail_url' => '%s/images/headers/fern-thumbnail.jpg' ,
2010-03-16 19:11:30 -04:00
'description' => __ ( 'Fern' , 'twentyten' )
2010-03-16 16:17:22 -04:00
),
'forestfloor' => array (
'url' => '%s/images/headers/forestfloor.jpg' ,
'thumbnail_url' => '%s/images/headers/forestfloor-thumbnail.jpg' ,
2010-03-16 19:11:30 -04:00
'description' => __ ( 'Forest Floor' , 'twentyten' )
2010-03-16 16:17:22 -04:00
),
'inkwell' => array (
'url' => '%s/images/headers/inkwell.jpg' ,
'thumbnail_url' => '%s/images/headers/inkwell-thumbnail.jpg' ,
2010-03-16 19:11:30 -04:00
'description' => __ ( 'Inkwell' , 'twentyten' )
2010-03-16 16:17:22 -04:00
),
'path' => array (
'url' => '%s/images/headers/path.jpg' ,
'thumbnail_url' => '%s/images/headers/path-thumbnail.jpg' ,
2010-03-16 19:11:30 -04:00
'description' => __ ( 'Path' , 'twentyten' )
2010-03-16 16:17:22 -04:00
),
'sunset' => array (
'url' => '%s/images/headers/sunset.jpg' ,
'thumbnail_url' => '%s/images/headers/sunset-thumbnail.jpg' ,
2010-03-16 19:11:30 -04:00
'description' => __ ( 'Sunset' , 'twentyten' )
2010-03-16 16:17:22 -04:00
)
) );
2010-02-14 16:39:20 -05:00
}
endif ;
2010-02-19 05:00:00 -05:00
add_action ( 'after_setup_theme' , 'twentyten_init' );
2010-02-07 11:16:26 -05:00
2010-02-14 16:39:20 -05:00
if ( ! function_exists ( 'twentyten_admin_header_style' ) ) :
2010-03-29 18:03:15 -04:00
/**
* Callback to style the header image inside the admin
*/
2010-02-07 11:16:26 -05:00
function twentyten_admin_header_style () {
?>
< style type = " text/css " >
#headimg {
height : < ? php echo HEADER_IMAGE_HEIGHT ; ?> px;
width : < ? php echo HEADER_IMAGE_WIDTH ; ?> px;
}
#headimg h1, #headimg #desc {
display : none ;
}
</ style >
< ? php
}
2010-02-14 16:39:20 -05:00
endif ;
2010-02-07 11:16:26 -05:00
2010-02-14 16:39:20 -05:00
if ( ! function_exists ( 'twentyten_get_page_number' ) ) :
2010-03-29 18:03:15 -04:00
/**
* Returns the page number currently being browsed
*
* Returns a vertical bar followed by page and the page
* number . Is pluggable
*
* @ retun string
*/
2010-02-13 20:00:22 -05:00
function twentyten_get_page_number () {
2010-03-16 16:17:22 -04:00
if ( get_query_var ( 'paged' ) )
return ' | ' . __ ( 'Page ' , 'twentyten' ) . get_query_var ( 'paged' );
2010-02-14 16:39:20 -05:00
}
endif ;
if ( ! function_exists ( 'twentyten_the_page_number' ) ) :
2010-03-29 18:03:15 -04:00
/**
* Echos the page number being browsed
*
* @ uses twentyten_get_page_number
*
*/
2010-02-14 16:39:20 -05:00
function twentyten_the_page_number () {
echo twentyten_get_page_number ();
2010-02-13 08:35:03 -05:00
}
2010-02-14 16:39:20 -05:00
endif ;
2010-02-07 11:16:26 -05:00
2010-02-14 16:39:20 -05:00
if ( ! function_exists ( 'twentyten_excerpt_length' ) ) :
2010-03-29 18:03:15 -04:00
/**
* Sets the excerpt length to 40 charachters . Is pluggable
*
* @ return int
*/
2010-02-14 16:39:20 -05:00
function twentyten_excerpt_length ( $length ) {
2010-02-07 11:16:26 -05:00
return 40 ;
}
2010-02-14 16:39:20 -05:00
endif ;
add_filter ( 'excerpt_length' , 'twentyten_excerpt_length' );
2010-02-07 11:16:26 -05:00
2010-02-14 16:39:20 -05:00
if ( ! function_exists ( 'twentyten_excerpt_more' ) ) :
2010-03-29 18:03:15 -04:00
/**
* Sets the read more link for excerpts to something pretty
*
* @ return string
*
*/
2010-03-16 16:17:22 -04:00
function twentyten_excerpt_more ( $more ) {
2010-03-16 19:11:30 -04:00
return ' … <a href="' . get_permalink () . '">' . __ ( 'Continue reading <span class="meta-nav">→</span>' , 'twentyten' ) . '</a>' ;
2010-02-07 11:16:26 -05:00
}
2010-02-14 16:39:20 -05:00
endif ;
add_filter ( 'excerpt_more' , 'twentyten_excerpt_more' );
2010-02-07 11:16:26 -05:00
2010-02-14 16:39:20 -05:00
if ( ! function_exists ( 'twentyten_comment' ) ) :
2010-03-29 18:03:15 -04:00
/**
* Template for comments and pingbacks
*
* Used as a callback by wp_list_comments for displaying the
* comments . Is pluggable
*
*/
2010-02-14 16:39:20 -05:00
function twentyten_comment ( $comment , $args , $depth ) {
$GLOBALS [ 'comment' ] = $comment ; ?>
< ? php if ( '' == $comment -> comment_type ) : ?>
2010-02-13 20:00:22 -05:00
< li < ? php comment_class (); ?> id="li-comment-<?php comment_ID(); ?>">
2010-02-07 11:16:26 -05:00
< div id = " comment-<?php comment_ID(); ?> " >
< div class = " comment-author vcard " >
2010-02-13 20:00:22 -05:00
< ? php echo get_avatar ( $comment , 40 ); ?>
2010-03-16 19:11:30 -04:00
< ? php printf ( __ ( '<cite class="fn">%s</cite> <span class="says">says:</span>' , 'twentyten' ), get_comment_author_link () ); ?>
2010-02-07 11:16:26 -05:00
</ div >
2010-02-13 20:00:22 -05:00
< ? php if ( $comment -> comment_approved == '0' ) : ?>
< em >< ? php _e ( 'Your comment is awaiting moderation.' , 'twentyten' ); ?> </em>
2010-02-07 11:16:26 -05:00
< br />
< ? php endif ; ?>
2010-03-16 19:11:30 -04:00
< div class = " comment-meta commentmetadata " >< a href = " <?php echo esc_url( get_comment_link( $comment->comment_ID ) ); ?> " >< ? php printf ( __ ( '%1$s at %2$s' , 'twentyten' ), get_comment_date (), get_comment_time () ); ?> </a><?php edit_comment_link( __( '(Edit)', 'twentyten' ),' ','' ); ?></div>
2010-02-07 11:16:26 -05:00
2010-02-13 20:00:22 -05:00
< div class = " comment-body " >< ? php comment_text (); ?> </div>
2010-02-07 11:16:26 -05:00
< div class = " reply " >
2010-02-14 16:39:20 -05:00
< ? php comment_reply_link ( array_merge ( $args , array ( 'depth' => $depth , 'max_depth' => $args [ 'max_depth' ] ) ) ); ?>
2010-02-07 11:16:26 -05:00
</ div >
2010-02-08 13:02:23 -05:00
</ div >
2010-02-07 11:16:26 -05:00
2010-02-14 16:39:20 -05:00
< ? php else : ?>
2010-02-07 11:16:26 -05:00
< li class = " post pingback " >
2010-02-13 20:00:22 -05:00
< p >< ? php _e ( 'Pingback: ' , 'twentyten' ); ?> <?php comment_author_link(); ?><?php edit_comment_link ( __('edit', 'twentyten'), ' ', '' ); ?></p>
2010-02-14 16:39:20 -05:00
< ? php endif ;
2010-02-07 11:16:26 -05:00
}
2010-02-14 16:39:20 -05:00
endif ;
2010-02-07 11:16:26 -05:00
2010-02-14 16:39:20 -05:00
if ( ! function_exists ( 'twentyten_remove_gallery_css' ) ) :
2010-03-29 18:03:15 -04:00
/**
* Remove inline styles on gallery shortcode
*
* @ return string
*/
2010-03-02 13:08:14 -05:00
function twentyten_remove_gallery_css ( $css ) {
return preg_replace ( " #<style type='text/css'>(.*?)</style>#s " , '' , $css );
2010-02-08 15:28:13 -05:00
}
2010-02-14 16:39:20 -05:00
endif ;
2010-02-13 20:00:22 -05:00
add_filter ( 'gallery_style' , 'twentyten_remove_gallery_css' );
2010-02-14 16:39:20 -05:00
if ( ! function_exists ( 'twentyten_cat_list' ) ) :
2010-03-29 18:03:15 -04:00
/**
* Returns the list of categories
*
* Returns the list of categories based on if we are or are
* not browsing a category archive page .
*
* @ uses twentyten_term_list
*
* @ return string
*/
2010-02-14 05:02:38 -05:00
function twentyten_cat_list () {
2010-03-16 16:17:22 -04:00
return twentyten_term_list ( 'category' , ', ' , __ ( 'Posted in %s' , 'twentyten' ), __ ( 'Also posted in %s' , 'twentyten' ) );
2010-02-14 05:02:38 -05:00
}
2010-02-14 16:39:20 -05:00
endif ;
if ( ! function_exists ( 'twentyten_tag_list' ) ) :
2010-03-29 18:03:15 -04:00
/**
* Returns the list of tags
*
* Returns the list of tags based on if we are or are not
* browsing a tag archive page
*
* @ uses twentyten_term_list
*
* @ return string
*/
2010-02-14 05:02:38 -05:00
function twentyten_tag_list () {
2010-03-16 16:17:22 -04:00
return twentyten_term_list ( 'post_tag' , ', ' , __ ( 'Tagged %s' , 'twentyten' ), __ ( 'Also tagged %s' , 'twentyten' ) );
2010-02-14 05:02:38 -05:00
}
2010-02-14 16:39:20 -05:00
endif ;
if ( ! function_exists ( 'twentyten_term_list' ) ) :
2010-03-29 18:03:15 -04:00
/**
* Returns the list of taxonomy items in multiple ways
*
* Returns the list of taxonomy items differently based on
* if we are browsing a term archive page or a different
* type of page . If browsing a term archive page and the
* post has no other taxonomied terms , it returns empty
*
* @ return string
*/
2010-03-16 16:17:22 -04:00
function twentyten_term_list ( $taxonomy , $glue = ', ' , $text = '' , $also_text = '' ) {
2010-02-14 05:02:38 -05:00
global $wp_query , $post ;
2010-02-14 06:52:27 -05:00
$current_term = $wp_query -> get_queried_object ();
2010-03-16 16:17:22 -04:00
$terms = wp_get_object_terms ( $post -> ID , $taxonomy );
2010-03-26 15:36:49 -04:00
// If we're viewing a Taxonomy page..
2010-03-16 16:17:22 -04:00
if ( isset ( $current_term -> taxonomy ) && $taxonomy == $current_term -> taxonomy ) {
2010-02-14 05:02:38 -05:00
// Remove the term from display.
2010-03-16 16:17:22 -04:00
foreach ( ( array ) $terms as $key => $term ) {
2010-02-14 05:02:38 -05:00
if ( $term -> term_id == $current_term -> term_id ) {
2010-03-16 16:17:22 -04:00
unset ( $terms [ $key ] );
2010-02-14 05:02:38 -05:00
break ;
}
2010-02-07 11:16:26 -05:00
}
2010-02-14 05:02:38 -05:00
// Change to Also text as we've now removed something from the terms list.
$text = $also_text ;
2010-02-07 11:16:26 -05:00
}
2010-02-14 05:02:38 -05:00
$tlist = array ();
$rel = 'category' == $taxonomy ? 'rel="category"' : 'rel="tag"' ;
2010-03-16 16:17:22 -04:00
foreach ( ( array ) $terms as $term ) {
2010-02-14 05:02:38 -05:00
$tlist [] = '<a href="' . get_term_link ( $term , $taxonomy ) . '" title="' . esc_attr ( sprintf ( __ ( 'View all posts in %s' , 'twentyten' ), $term -> name ) ) . '" ' . $rel . '>' . $term -> name . '</a>' ;
2010-02-07 11:16:26 -05:00
}
2010-03-16 16:17:22 -04:00
if ( ! empty ( $tlist ) )
return sprintf ( $text , join ( $glue , $tlist ) );
2010-02-14 05:02:38 -05:00
return '' ;
}
2010-02-14 16:39:20 -05:00
endif ;
2010-02-07 11:16:26 -05:00
2010-02-14 16:39:20 -05:00
if ( ! function_exists ( 'twentyten_widgets_init' ) ) :
2010-03-29 18:03:15 -04:00
/**
* Register widgetized areas
*
* @ uses register_sidebar
*/
2010-02-13 20:00:22 -05:00
function twentyten_widgets_init () {
2010-02-07 11:16:26 -05:00
// Area 1
2010-02-14 16:39:20 -05:00
register_sidebar ( array (
2010-02-07 11:16:26 -05:00
'name' => 'Primary Widget Area' ,
'id' => 'primary-widget-area' ,
2010-02-13 20:00:22 -05:00
'description' => __ ( 'The primary widget area' , 'twentyten' ),
2010-02-07 11:16:26 -05:00
'before_widget' => '<li id="%1$s" class="widget-container %2$s">' ,
'after_widget' => " </li> " ,
'before_title' => '<h3 class="widget-title">' ,
'after_title' => '</h3>' ,
) );
2010-02-08 13:02:23 -05:00
2010-02-07 11:16:26 -05:00
// Area 2
2010-02-14 16:39:20 -05:00
register_sidebar ( array (
2010-02-07 11:16:26 -05:00
'name' => 'Secondary Widget Area' ,
2010-02-08 13:02:23 -05:00
'id' => 'secondary-widget-area' ,
2010-02-13 20:00:22 -05:00
'description' => __ ( 'The secondary widget area' , 'twentyten' ),
2010-02-07 11:16:26 -05:00
'before_widget' => '<li id="%1$s" class="widget-container %2$s">' ,
'after_widget' => " </li> " ,
'before_title' => '<h3 class="widget-title">' ,
'after_title' => '</h3>' ,
) );
2010-02-08 13:02:23 -05:00
2010-02-07 11:16:26 -05:00
// Area 3
2010-02-14 16:39:20 -05:00
register_sidebar ( array (
2010-02-07 11:16:26 -05:00
'name' => 'First Footer Widget Area' ,
2010-02-08 13:02:23 -05:00
'id' => 'first-footer-widget-area' ,
2010-02-13 20:00:22 -05:00
'description' => __ ( 'The first footer widget area' , 'twentyten' ),
2010-02-07 11:16:26 -05:00
'before_widget' => '<li id="%1$s" class="widget-container %2$s">' ,
'after_widget' => " </li> " ,
'before_title' => '<h3 class="widget-title">' ,
'after_title' => '</h3>' ,
2010-02-08 13:02:23 -05:00
) );
2010-02-07 11:16:26 -05:00
// Area 4
2010-02-14 16:39:20 -05:00
register_sidebar ( array (
2010-02-07 11:16:26 -05:00
'name' => 'Second Footer Widget Area' ,
2010-02-08 13:02:23 -05:00
'id' => 'second-footer-widget-area' ,
2010-02-13 20:00:22 -05:00
'description' => __ ( 'The second footer widget area' , 'twentyten' ),
2010-02-07 11:16:26 -05:00
'before_widget' => '<li id="%1$s" class="widget-container %2$s">' ,
'after_widget' => " </li> " ,
'before_title' => '<h3 class="widget-title">' ,
'after_title' => '</h3>' ,
2010-02-08 13:02:23 -05:00
) );
2010-02-07 11:16:26 -05:00
// Area 5
2010-02-14 16:39:20 -05:00
register_sidebar ( array (
2010-02-07 11:16:26 -05:00
'name' => 'Third Footer Widget Area' ,
2010-02-08 13:02:23 -05:00
'id' => 'third-footer-widget-area' ,
2010-02-13 20:00:22 -05:00
'description' => __ ( 'The third footer widget area' , 'twentyten' ),
2010-02-07 11:16:26 -05:00
'before_widget' => '<li id="%1$s" class="widget-container %2$s">' ,
'after_widget' => " </li> " ,
'before_title' => '<h3 class="widget-title">' ,
'after_title' => '</h3>' ,
2010-02-08 13:02:23 -05:00
) );
2010-02-07 11:16:26 -05:00
// Area 6
2010-02-14 16:39:20 -05:00
register_sidebar ( array (
2010-02-07 11:16:26 -05:00
'name' => 'Fourth Footer Widget Area' ,
2010-02-08 13:02:23 -05:00
'id' => 'fourth-footer-widget-area' ,
2010-02-13 20:00:22 -05:00
'description' => __ ( 'The fourth footer widget area' , 'twentyten' ),
2010-02-07 11:16:26 -05:00
'before_widget' => '<li id="%1$s" class="widget-container %2$s">' ,
'after_widget' => " </li> " ,
'before_title' => '<h3 class="widget-title">' ,
'after_title' => '</h3>' ,
2010-02-08 13:02:23 -05:00
) );
2010-02-14 16:39:20 -05:00
}
endif ;
2010-02-13 20:00:22 -05:00
add_action ( 'init' , 'twentyten_widgets_init' );