diff -r 2f6f6f7551ca -r 32102edaa81b web/wp-content/themes/twentyten/functions.php --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/web/wp-content/themes/twentyten/functions.php Mon Nov 19 18:26:13 2012 +0100 @@ -0,0 +1,513 @@ + + * add_action( 'after_setup_theme', 'my_child_theme_setup' ); + * function my_child_theme_setup() { + * // We are providing our own filter for excerpt_length (or using the unfiltered value) + * remove_filter( 'excerpt_length', 'twentyten_excerpt_length' ); + * ... + * } + * + * + * For more information on hooks, actions, and filters, see http://codex.wordpress.org/Plugin_API. + * + * @package WordPress + * @subpackage Twenty_Ten + * @since Twenty Ten 1.0 + */ + +/** + * Set the content width based on the theme's design and stylesheet. + * + * Used to set the width of images and content. Should be equal to the width the theme + * is designed for, generally via the style.css stylesheet. + */ +if ( ! isset( $content_width ) ) + $content_width = 640; + +/** Tell WordPress to run twentyten_setup() when the 'after_setup_theme' hook is run. */ +add_action( 'after_setup_theme', 'twentyten_setup' ); + +if ( ! function_exists( 'twentyten_setup' ) ): +/** + * Sets up theme defaults and registers support for various WordPress features. + * + * Note that this function is hooked into the after_setup_theme hook, which runs + * before the init hook. The init hook is too late for some features, such as indicating + * support post thumbnails. + * + * To override twentyten_setup() in a child theme, add your own twentyten_setup to your child theme's + * functions.php file. + * + * @uses add_theme_support() To add support for post thumbnails, custom headers and backgrounds, and automatic feed links. + * @uses register_nav_menus() To add support for navigation menus. + * @uses add_editor_style() To style the visual editor. + * @uses load_theme_textdomain() For translation/localization support. + * @uses register_default_headers() To register the default custom header images provided with the theme. + * @uses set_post_thumbnail_size() To set a custom post thumbnail size. + * + * @since Twenty Ten 1.0 + */ +function twentyten_setup() { + + // This theme styles the visual editor with editor-style.css to match the theme style. + add_editor_style(); + + // Post Format support. You can also use the legacy "gallery" or "asides" (note the plural) categories. + add_theme_support( 'post-formats', array( 'aside', 'gallery' ) ); + + // This theme uses post thumbnails + add_theme_support( 'post-thumbnails' ); + + // 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', get_template_directory() . '/languages' ); + + // This theme uses wp_nav_menu() in one location. + register_nav_menus( array( + 'primary' => __( 'Primary Navigation', 'twentyten' ), + ) ); + + // This theme allows users to set a custom background. + add_theme_support( 'custom-background', array( + // Let WordPress know what our default background color is. + 'default-color' => 'f1f1f1', + ) ); + + // The custom header business starts here. + + $custom_header_support = array( + // The default image to use. + // The %s is a placeholder for the theme template directory URI. + 'default-image' => '%s/images/headers/path.jpg', + // The height and width of our custom header. + 'width' => apply_filters( 'twentyten_header_image_width', 940 ), + 'height' => apply_filters( 'twentyten_header_image_height', 198 ), + // Support flexible heights. + 'flex-height' => true, + // Don't support text inside the header image. + 'header-text' => false, + // Callback for styling the header preview in the admin. + 'admin-head-callback' => 'twentyten_admin_header_style', + ); + + add_theme_support( 'custom-header', $custom_header_support ); + + if ( ! function_exists( 'get_custom_header' ) ) { + // This is all for compatibility with versions of WordPress prior to 3.4. + define( 'HEADER_TEXTCOLOR', '' ); + define( 'NO_HEADER_TEXT', true ); + define( 'HEADER_IMAGE', $custom_header_support['default-image'] ); + define( 'HEADER_IMAGE_WIDTH', $custom_header_support['width'] ); + define( 'HEADER_IMAGE_HEIGHT', $custom_header_support['height'] ); + add_custom_image_header( '', $custom_header_support['admin-head-callback'] ); + add_custom_background(); + } + + // We'll be using post thumbnails for custom header images on posts and pages. + // We want them to be 940 pixels wide by 198 pixels tall. + // Larger images will be auto-cropped to fit, smaller ones will be ignored. See header.php. + set_post_thumbnail_size( $custom_header_support['width'], $custom_header_support['height'], true ); + + // ... and thus ends the custom header business. + + // Default custom headers packaged with the theme. %s is a placeholder for the theme template directory URI. + register_default_headers( array( + 'berries' => array( + 'url' => '%s/images/headers/berries.jpg', + 'thumbnail_url' => '%s/images/headers/berries-thumbnail.jpg', + /* translators: header image description */ + 'description' => __( 'Berries', 'twentyten' ) + ), + 'cherryblossom' => array( + 'url' => '%s/images/headers/cherryblossoms.jpg', + 'thumbnail_url' => '%s/images/headers/cherryblossoms-thumbnail.jpg', + /* translators: header image description */ + 'description' => __( 'Cherry Blossoms', 'twentyten' ) + ), + 'concave' => array( + 'url' => '%s/images/headers/concave.jpg', + 'thumbnail_url' => '%s/images/headers/concave-thumbnail.jpg', + /* translators: header image description */ + 'description' => __( 'Concave', 'twentyten' ) + ), + 'fern' => array( + 'url' => '%s/images/headers/fern.jpg', + 'thumbnail_url' => '%s/images/headers/fern-thumbnail.jpg', + /* translators: header image description */ + 'description' => __( 'Fern', 'twentyten' ) + ), + 'forestfloor' => array( + 'url' => '%s/images/headers/forestfloor.jpg', + 'thumbnail_url' => '%s/images/headers/forestfloor-thumbnail.jpg', + /* translators: header image description */ + 'description' => __( 'Forest Floor', 'twentyten' ) + ), + 'inkwell' => array( + 'url' => '%s/images/headers/inkwell.jpg', + 'thumbnail_url' => '%s/images/headers/inkwell-thumbnail.jpg', + /* translators: header image description */ + 'description' => __( 'Inkwell', 'twentyten' ) + ), + 'path' => array( + 'url' => '%s/images/headers/path.jpg', + 'thumbnail_url' => '%s/images/headers/path-thumbnail.jpg', + /* translators: header image description */ + 'description' => __( 'Path', 'twentyten' ) + ), + 'sunset' => array( + 'url' => '%s/images/headers/sunset.jpg', + 'thumbnail_url' => '%s/images/headers/sunset-thumbnail.jpg', + /* translators: header image description */ + 'description' => __( 'Sunset', 'twentyten' ) + ) + ) ); +} +endif; + +if ( ! function_exists( 'twentyten_admin_header_style' ) ) : +/** + * Styles the header image displayed on the Appearance > Header admin panel. + * + * Referenced via add_custom_image_header() in twentyten_setup(). + * + * @since Twenty Ten 1.0 + */ +function twentyten_admin_header_style() { +?> + +' . __( 'Continue reading ', 'twentyten' ) . ''; +} + +/** + * Replaces "[...]" (appended to automatically generated excerpts) with an ellipsis and twentyten_continue_reading_link(). + * + * To override this in a child theme, remove the filter and add your own + * function tied to the excerpt_more filter hook. + * + * @since Twenty Ten 1.0 + * @return string An ellipsis + */ +function twentyten_auto_excerpt_more( $more ) { + return ' …' . twentyten_continue_reading_link(); +} +add_filter( 'excerpt_more', 'twentyten_auto_excerpt_more' ); + +/** + * Adds a pretty "Continue Reading" link to custom post excerpts. + * + * To override this link in a child theme, remove the filter and add your own + * function tied to the get_the_excerpt filter hook. + * + * @since Twenty Ten 1.0 + * @return string Excerpt with a pretty "Continue Reading" link + */ +function twentyten_custom_excerpt_more( $output ) { + if ( has_excerpt() && ! is_attachment() ) { + $output .= twentyten_continue_reading_link(); + } + return $output; +} +add_filter( 'get_the_excerpt', 'twentyten_custom_excerpt_more' ); + +/** + * Remove inline styles printed when the gallery shortcode is used. + * + * Galleries are styled by the theme in Twenty Ten's style.css. This is just + * a simple filter call that tells WordPress to not use the default styles. + * + * @since Twenty Ten 1.2 + */ +add_filter( 'use_default_gallery_style', '__return_false' ); + +/** + * Deprecated way to remove inline styles printed when the gallery shortcode is used. + * + * This function is no longer needed or used. Use the use_default_gallery_style + * filter instead, as seen above. + * + * @since Twenty Ten 1.0 + * @deprecated Deprecated in Twenty Ten 1.2 for WordPress 3.1 + * + * @return string The gallery style filter, with the styles themselves removed. + */ +function twentyten_remove_gallery_css( $css ) { + return preg_replace( "##s", '', $css ); +} +// Backwards compatibility with WordPress 3.0. +if ( version_compare( $GLOBALS['wp_version'], '3.1', '<' ) ) + add_filter( 'gallery_style', 'twentyten_remove_gallery_css' ); + +if ( ! function_exists( 'twentyten_comment' ) ) : +/** + * Template for comments and pingbacks. + * + * To override this walker in a child theme without modifying the comments template + * simply create your own twentyten_comment(), and that function will be used instead. + * + * Used as a callback by wp_list_comments() for displaying the comments. + * + * @since Twenty Ten 1.0 + */ +function twentyten_comment( $comment, $args, $depth ) { + $GLOBALS['comment'] = $comment; + switch ( $comment->comment_type ) : + case '' : + ?> +
  • id="li-comment-"> +
    +
    + + says:', 'twentyten' ), sprintf( '%s', get_comment_author_link() ) ); ?> +
    + comment_approved == '0' ) : ?> + +
    + + + + +
    + +
    + $depth, 'max_depth' => $args['max_depth'] ) ) ); ?> +
    +
    + + +
  • +

    + __( 'Primary Widget Area', 'twentyten' ), + 'id' => 'primary-widget-area', + 'description' => __( 'The primary widget area', 'twentyten' ), + 'before_widget' => '
  • ', + 'after_widget' => '
  • ', + 'before_title' => '

    ', + 'after_title' => '

    ', + ) ); + + // Area 2, located below the Primary Widget Area in the sidebar. Empty by default. + register_sidebar( array( + 'name' => __( 'Secondary Widget Area', 'twentyten' ), + 'id' => 'secondary-widget-area', + 'description' => __( 'The secondary widget area', 'twentyten' ), + 'before_widget' => '
  • ', + 'after_widget' => '
  • ', + 'before_title' => '

    ', + 'after_title' => '

    ', + ) ); + + // Area 3, located in the footer. Empty by default. + register_sidebar( array( + 'name' => __( 'First Footer Widget Area', 'twentyten' ), + 'id' => 'first-footer-widget-area', + 'description' => __( 'The first footer widget area', 'twentyten' ), + 'before_widget' => '
  • ', + 'after_widget' => '
  • ', + 'before_title' => '

    ', + 'after_title' => '

    ', + ) ); + + // Area 4, located in the footer. Empty by default. + register_sidebar( array( + 'name' => __( 'Second Footer Widget Area', 'twentyten' ), + 'id' => 'second-footer-widget-area', + 'description' => __( 'The second footer widget area', 'twentyten' ), + 'before_widget' => '
  • ', + 'after_widget' => '
  • ', + 'before_title' => '

    ', + 'after_title' => '

    ', + ) ); + + // Area 5, located in the footer. Empty by default. + register_sidebar( array( + 'name' => __( 'Third Footer Widget Area', 'twentyten' ), + 'id' => 'third-footer-widget-area', + 'description' => __( 'The third footer widget area', 'twentyten' ), + 'before_widget' => '
  • ', + 'after_widget' => '
  • ', + 'before_title' => '

    ', + 'after_title' => '

    ', + ) ); + + // Area 6, located in the footer. Empty by default. + register_sidebar( array( + 'name' => __( 'Fourth Footer Widget Area', 'twentyten' ), + 'id' => 'fourth-footer-widget-area', + 'description' => __( 'The fourth footer widget area', 'twentyten' ), + 'before_widget' => '
  • ', + 'after_widget' => '
  • ', + 'before_title' => '

    ', + 'after_title' => '

    ', + ) ); +} +/** Register sidebars by running twentyten_widgets_init() on the widgets_init hook. */ +add_action( 'widgets_init', 'twentyten_widgets_init' ); + +/** + * Removes the default styles that are packaged with the Recent Comments widget. + * + * To override this in a child theme, remove the filter and optionally add your own + * function tied to the widgets_init action hook. + * + * This function uses a filter (show_recent_comments_widget_style) new in WordPress 3.1 + * to remove the default style. Using Twenty Ten 1.2 in WordPress 3.0 will show the styles, + * but they won't have any effect on the widget in default Twenty Ten styling. + * + * @since Twenty Ten 1.0 + */ +function twentyten_remove_recent_comments_style() { + add_filter( 'show_recent_comments_widget_style', '__return_false' ); +} +add_action( 'widgets_init', 'twentyten_remove_recent_comments_style' ); + +if ( ! function_exists( 'twentyten_posted_on' ) ) : +/** + * Prints HTML with meta information for the current post-date/time and author. + * + * @since Twenty Ten 1.0 + */ +function twentyten_posted_on() { + printf( __( 'Posted on %2$s by %3$s', 'twentyten' ), + 'meta-prep meta-prep-author', + sprintf( '%3$s', + get_permalink(), + esc_attr( get_the_time() ), + get_the_date() + ), + sprintf( '%3$s', + get_author_posts_url( get_the_author_meta( 'ID' ) ), + esc_attr( sprintf( __( 'View all posts by %s', 'twentyten' ), get_the_author() ) ), + get_the_author() + ) + ); +} +endif; + +if ( ! function_exists( 'twentyten_posted_in' ) ) : +/** + * Prints HTML with meta information for the current post (category, tags and permalink). + * + * @since Twenty Ten 1.0 + */ +function twentyten_posted_in() { + // Retrieves tag list of current post, separated by commas. + $tag_list = get_the_tag_list( '', ', ' ); + if ( $tag_list ) { + $posted_in = __( 'This entry was posted in %1$s and tagged %2$s. Bookmark the permalink.', 'twentyten' ); + } elseif ( is_object_in_taxonomy( get_post_type(), 'category' ) ) { + $posted_in = __( 'This entry was posted in %1$s. Bookmark the permalink.', 'twentyten' ); + } else { + $posted_in = __( 'Bookmark the permalink.', 'twentyten' ); + } + // Prints the string, replacing the placeholders. + printf( + $posted_in, + get_the_category_list( ', ' ), + $tag_list, + get_permalink(), + the_title_attribute( 'echo=0' ) + ); +} +endif;