From 01ce62d24ff3f23eaf87d56a13d4d77a65eef654 Mon Sep 17 00:00:00 2001 From: Ian Stewart Date: Wed, 11 Jan 2012 03:43:23 +0000 Subject: [PATCH] _s: simplifying functions.php by making some of the stuff happening there modular with functions being called in templates showing up in template-tags.php, little extras that won't produce a visible error if they're missing in tweaks, and wpcom stuff in wpcom --- functions.php | 258 ++++-------------------------------------- inc/template-tags.php | 158 ++++++++++++++++++++++++++ inc/tweaks.php | 52 +++++++++ inc/wpcom.php | 18 +++ sidebar.php | 8 +- 5 files changed, 251 insertions(+), 243 deletions(-) create mode 100644 inc/template-tags.php create mode 100644 inc/tweaks.php create mode 100644 inc/wpcom.php diff --git a/functions.php b/functions.php index dc395d12..5bf1bb2e 100644 --- a/functions.php +++ b/functions.php @@ -2,28 +2,14 @@ /** * _s functions and definitions * - * Sets up the theme and provides some helper functions. Some helper functions - * are used in the theme as custom template tags. Others are attached to action and - * filter hooks in WordPress to change core functionality. - * - * When using a child theme (see http://codex.wordpress.org/Theme_Development and - * http://codex.wordpress.org/Child_Themes), you can override certain functions - * (those wrapped in a function_exists() call) by defining them first in your child theme's - * functions.php file. The child theme's functions.php file is included before the parent - * theme's file, so the child theme functions would be used. - * - * Functions that are not pluggable (not wrapped in function_exists()) are instead attached - * to a filter or action hook. The hook can be removed by using remove_action() or - * remove_filter() and you can attach your own function to the hook. - * - * For more information on hooks, actions, and filters, see http://codex.wordpress.org/Plugin_API. - * * @package _s * @since _s 1.0 */ /** * Set the content width based on the theme's design and stylesheet. + * + * @since _s 1.0 */ if ( ! isset( $content_width ) ) $content_width = 640; /* pixels */ @@ -36,10 +22,25 @@ if ( ! function_exists( '_s_setup' ) ): * before the init hook. The init hook is too late for some features, such as indicating * support post thumbnails. * - * To override _s_setup() in a child theme, add your own _s_setup to your child theme's - * functions.php file. + * @since _s 1.0 */ function _s_setup() { + + /** + * Custom template tags for this theme. + */ + require( get_template_directory() . '/inc/template-tags.php' ); + + /** + * Custom functions that act independently of the theme templates + */ + //require( get_template_directory() . '/inc/tweaks.php' ); + + /** + * WordPress.com-specific functions and definitions + */ + //require( get_template_directory() . '/inc/wpcom.php' ); + /** * Make theme available for translation * Translations can be filed in the /languages/ directory @@ -71,32 +72,12 @@ function _s_setup() { add_theme_support( 'post-formats', array( 'aside', ) ); } endif; // _s_setup - -/** - * Tell WordPress to run _s_setup() when the 'after_setup_theme' hook is run. - */ add_action( 'after_setup_theme', '_s_setup' ); -/** - * Set a default theme color array for WP.com. - */ -$themecolors = array( - 'bg' => 'ffffff', - 'border' => 'eeeeee', - 'text' => '444444', -); - -/** - * Get our wp_nav_menu() fallback, wp_page_menu(), to show a home link. - */ -function _s_page_menu_args( $args ) { - $args['show_home'] = true; - return $args; -} -add_filter( 'wp_page_menu_args', '_s_page_menu_args' ); - /** * Register widgetized area and update sidebar with default widgets + * + * @since _s 1.0 */ function _s_widgets_init() { register_sidebar( array( @@ -107,200 +88,5 @@ function _s_widgets_init() { 'before_title' => '

', 'after_title' => '

', ) ); - - register_sidebar( array( - 'name' => __( 'Sidebar 2', '_s' ), - 'id' => 'sidebar-2', - 'description' => __( 'An optional second sidebar area', '_s' ), - 'before_widget' => '", - 'before_title' => '

', - 'after_title' => '

', - ) ); } -add_action( 'init', '_s_widgets_init' ); - -if ( ! function_exists( '_s_content_nav' ) ): -/** - * Display navigation to next/previous pages when applicable - * - * @since _s 1.0 - */ -function _s_content_nav( $nav_id ) { - global $wp_query; - - ?> - - comment_type ) : - case 'pingback' : - case 'trackback' : - ?> -
  • -

    - -
  • id="li-comment-"> -
    -
    -
    - - says:', '_s' ), sprintf( '%s', get_comment_author_link() ) ); ?> -
    - comment_approved == '0' ) : ?> - -
    - - - -
    - -
    - -
    - $depth, 'max_depth' => $args['max_depth'] ) ) ); ?> -
    -
    - - Posted on ', '_s' ), - esc_url( get_permalink() ), - esc_attr( get_the_time() ), - esc_attr( get_the_date( 'c' ) ), - esc_html( get_the_date() ), - esc_url( get_author_posts_url( get_the_author_meta( 'ID' ) ) ), - esc_attr( sprintf( __( 'View all posts by %s', '_s' ), get_the_author() ) ), - esc_html( get_the_author() ) - ); -} -endif; - -/** - * Adds custom classes to the array of body classes. - * - * @since _s 1.0 - */ -function _s_body_classes( $classes ) { - // Adds a class of single-author to blogs with only 1 published author - if ( ! is_multi_author() ) { - $classes[] = 'single-author'; - } - - return $classes; -} -add_filter( 'body_class', '_s_body_classes' ); - -/** - * Returns true if a blog has more than 1 category - * - * @since _s 1.0 - */ -function _s_categorized_blog() { - if ( false === ( $all_the_cool_cats = get_transient( 'all_the_cool_cats' ) ) ) { - // Create an array of all the categories that are attached to posts - $all_the_cool_cats = get_categories( array( - 'hide_empty' => 1, - ) ); - - // Count the number of categories that are attached to the posts - $all_the_cool_cats = count( $all_the_cool_cats ); - - set_transient( 'all_the_cool_cats', $all_the_cool_cats ); - } - - if ( '1' != $all_the_cool_cats ) { - // This blog has more than 1 category so _s_categorized_blog should return true - return true; - } else { - // This blog has only 1 category so _s_categorized_blog should return false - return false; - } -} - -/** - * Flush out the transients used in _s_categorized_blog - * - * @since _s 1.0 - */ -function _s_category_transient_flusher() { - // Like, beat it. Dig? - delete_transient( 'all_the_cool_cats' ); -} -add_action( 'edit_category', '_s_category_transient_flusher' ); -add_action( 'save_post', '_s_category_transient_flusher' ); - -/** - * Filter in a link to a content ID attribute for the next/previous image links on image attachment pages - */ -function _s_enhanced_image_navigation( $url ) { - global $post, $wp_rewrite; - - $id = (int) $post->ID; - $object = get_post( $id ); - if ( wp_attachment_is_image( $post->ID ) && ( $wp_rewrite->using_permalinks() && ( $object->post_parent > 0 ) && ( $object->post_parent != $id ) ) ) - $url = $url . '#main'; - - return $url; -} -add_filter( 'attachment_link', '_s_enhanced_image_navigation' ); - +add_action( 'init', '_s_widgets_init' ); \ No newline at end of file diff --git a/inc/template-tags.php b/inc/template-tags.php new file mode 100644 index 00000000..b14567d4 --- /dev/null +++ b/inc/template-tags.php @@ -0,0 +1,158 @@ + + + comment_type ) : + case 'pingback' : + case 'trackback' : + ?> +
  • +

    + +
  • id="li-comment-"> +
    +
    +
    + + says:', '_s' ), sprintf( '%s', get_comment_author_link() ) ); ?> +
    + comment_approved == '0' ) : ?> + +
    + + + +
    + +
    + +
    + $depth, 'max_depth' => $args['max_depth'] ) ) ); ?> +
    +
    + + Posted on ', '_s' ), + esc_url( get_permalink() ), + esc_attr( get_the_time() ), + esc_attr( get_the_date( 'c' ) ), + esc_html( get_the_date() ), + esc_url( get_author_posts_url( get_the_author_meta( 'ID' ) ) ), + esc_attr( sprintf( __( 'View all posts by %s', '_s' ), get_the_author() ) ), + esc_html( get_the_author() ) + ); +} +endif; + +/** + * Returns true if a blog has more than 1 category + * + * @since _s 1.0 + */ +function _s_categorized_blog() { + if ( false === ( $all_the_cool_cats = get_transient( 'all_the_cool_cats' ) ) ) { + // Create an array of all the categories that are attached to posts + $all_the_cool_cats = get_categories( array( + 'hide_empty' => 1, + ) ); + + // Count the number of categories that are attached to the posts + $all_the_cool_cats = count( $all_the_cool_cats ); + + set_transient( 'all_the_cool_cats', $all_the_cool_cats ); + } + + if ( '1' != $all_the_cool_cats ) { + // This blog has more than 1 category so _s_categorized_blog should return true + return true; + } else { + // This blog has only 1 category so _s_categorized_blog should return false + return false; + } +} + +/** + * Flush out the transients used in _s_categorized_blog + * + * @since _s 1.0 + */ +function _s_category_transient_flusher() { + // Like, beat it. Dig? + delete_transient( 'all_the_cool_cats' ); +} +add_action( 'edit_category', '_s_category_transient_flusher' ); +add_action( 'save_post', '_s_category_transient_flusher' ); \ No newline at end of file diff --git a/inc/tweaks.php b/inc/tweaks.php new file mode 100644 index 00000000..1900ef39 --- /dev/null +++ b/inc/tweaks.php @@ -0,0 +1,52 @@ +post_parent ) && $image->post_parent != $id ) + $url .= '#main'; + + return $url; +} +add_filter( 'attachment_link', '_s_enhanced_image_navigation', 10, 2 ); \ No newline at end of file diff --git a/inc/wpcom.php b/inc/wpcom.php new file mode 100644 index 00000000..f8f1fd9c --- /dev/null +++ b/inc/wpcom.php @@ -0,0 +1,18 @@ + 'ffffff', + 'border' => 'eeeeee', + 'text' => '444444', +); diff --git a/sidebar.php b/sidebar.php index 9c0d5f50..83d82ab6 100644 --- a/sidebar.php +++ b/sidebar.php @@ -31,10 +31,4 @@ - - - - - \ No newline at end of file + \ No newline at end of file