<?php /** * Sparkle Vitae 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 WordPress * @subpackage Sparkle Vitae * @since Sparkle Vitae 1.0 */ /** * Include all of our resume functions */ require( get_template_directory() . '/inc/vitae-admin.php' ); /** * Set the content width based on the theme's design and stylesheet. */ if ( ! isset( $content_width ) ) $content_width = 725; /* pixels */ if ( ! function_exists( 'sparkle_vitae_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 sparkle_vitae_setup() in a child theme, add your own sparkle_vitae_setup to your child theme's * functions.php file. */ function sparkle_vitae_setup() { /** * Make theme available for translation * Translations can be filed in the /languages/ directory * If you're building a theme based on toolbox, use a find and replace * to change 'sparkle-vitae' to the name of your theme in all the template files */ load_theme_textdomain( 'sparkle-vitae', get_template_directory() . '/languages' ); /** * Add default posts and comments RSS feed links to head */ add_theme_support( 'automatic-feed-links' ); /** * This theme uses wp_nav_menu() in one location. */ register_nav_menus( array( 'primary' => __( 'Primary Menu', 'sparkle-vitae' ), ) ); /** * Add theme support for featured thumbnails */ add_theme_support( 'post-thumbnails' ); sparkle_setup_resume(); } endif; // sparkle_vitae_setup /** * Tell WordPress to run sparkle_vitae_setup() when the 'after_setup_theme' hook is run. */ add_action( 'after_setup_theme', 'sparkle_vitae_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 sparkle_vitae_page_menu_args( $args ) { $args['show_home'] = true; return $args; } add_filter( 'wp_page_menu_args', 'sparkle_vitae_page_menu_args' ); /** * Register widgetized area and update sidebar with default widgets */ function sparkle_vitae_widgets_init() { register_sidebar( array( 'name' => __( 'Sidebar 1', 'sparkle-vitae' ), 'id' => 'sidebar-1', 'before_widget' => '<aside id="%1$s" class="widget %2$s">', 'after_widget' => "</aside>", 'before_title' => '<h1 class="widget-title">', 'after_title' => '</h1>', ) ); } add_action( 'init', 'sparkle_vitae_widgets_init' ); if ( ! function_exists( 'sparkle_vitae_content_nav' ) ): /** * Display navigation to next/previous pages when applicable * * @since Sparkle Vitae 1.2 */ function sparkle_vitae_content_nav( $nav_id ) { global $wp_query; ?> <nav id="<?php echo esc_attr( $nav_id ); ?>"> <h1 class="assistive-text section-heading"><?php _e( 'Post navigation', 'sparkle-vitae' ); ?></h1> <?php if ( is_single() ) : // navigation links for single posts ?> <?php previous_post_link( '<div class="nav-previous">%link</div>', '<span class="meta-nav">' . _x( '←', 'Previous post link', 'sparkle-vitae' ) . '</span> %title' ); ?> <?php next_post_link( '<div class="nav-next">%link</div>', '%title <span class="meta-nav">' . _x( '→', 'Next post link', 'sparkle-vitae' ) . '</span>' ); ?> <?php elseif ( $wp_query->max_num_pages > 1 && ( is_home() || is_archive() || is_search() ) ) : // navigation links for home, archive, and search pages ?> <?php if ( get_next_posts_link() ) : ?> <div class="nav-previous"><?php next_posts_link( __( '<span class="meta-nav">←</span> Older posts', 'sparkle-vitae' ) ); ?></div> <?php endif; ?> <?php if ( get_previous_posts_link() ) : ?> <div class="nav-next"><?php previous_posts_link( __( 'Newer posts <span class="meta-nav">→</span>', 'sparkle-vitae' ) ); ?></div> <?php endif; ?> <?php endif; ?> </nav><!-- #<?php echo $nav_id; ?> --> <?php } endif; // sparkle_vitae_content_nav if ( ! function_exists( 'sparkle_vitae_comment' ) ) : /** * Template for comments and pingbacks. * * To override this walker in a child theme without modifying the comments template * simply create your own sparkle_vitae_comment(), and that function will be used instead. * * Used as a callback by wp_list_comments() for displaying the comments. * * @since Sparkle Vitae 0.4 */ function sparkle_vitae_comment( $comment, $args, $depth ) { $GLOBALS['comment'] = $comment; switch ( $comment->comment_type ) : case 'pingback' : case 'trackback' : ?> <li class="post pingback"> <p><?php _e( 'Pingback:', 'sparkle-vitae' ); ?> <?php comment_author_link(); ?><?php edit_comment_link( __( '(Edit)', 'sparkle-vitae' ), ' ' ); ?></p> <?php break; default : ?> <li <?php comment_class(); ?> id="li-comment-<?php comment_ID(); ?>"> <article id="comment-<?php comment_ID(); ?>" class="comment"> <footer> <div class="comment-author vcard"> <?php echo get_avatar( $comment, 42 ); ?> <?php printf( __( '%s <span class="says">says:</span>', 'sparkle-vitae' ), sprintf( '<cite class="fn">%s</cite>', get_comment_author_link() ) ); ?> </div><!-- .comment-author .vcard --> <?php if ( $comment->comment_approved == '0' ) : ?> <em><?php _e( 'Your comment is awaiting moderation.', 'sparkle-vitae' ); ?></em> <br /> <?php endif; ?> <div class="comment-meta commentmetadata"> <a href="<?php echo esc_url( get_comment_link( $comment->comment_ID ) ); ?>"><time pubdate datetime="<?php comment_time( 'c' ); ?>"> <?php /* translators: 1: date, 2: time */ printf( __( '%1$s at %2$s', 'sparkle-vitae' ), get_comment_date(), get_comment_time() ); ?> </time></a> <?php edit_comment_link( __( '(Edit)', 'sparkle-vitae' ), ' ' ); ?> </div><!-- .comment-meta .commentmetadata --> </footer> <div class="comment-content"><?php comment_text(); ?></div> <div class="reply"> <?php comment_reply_link( array_merge( $args, array( 'depth' => $depth, 'max_depth' => $args['max_depth'] ) ) ); ?> </div><!-- .reply --> </article><!-- #comment-## --> <?php break; endswitch; } endif; // ends check for sparkle_vitae_comment() if ( ! function_exists( 'sparkle_vitae_posted_on' ) ) : /** * Prints HTML with meta information for the current post-date/time and author. * Create your own sparkle_vitae_posted_on to override in a child theme * * @since Sparkle Vitae 1.2 */ function sparkle_vitae_posted_on() { printf( __( '<span class="sep">Published </span><a href="%1$s" title="%2$s" rel="bookmark"><time class="entry-date" datetime="%3$s" pubdate>%4$s</time></a><span class="byline"> <span class="sep"> by </span> <span class="author vcard"><a class="url fn n" href="%5$s" title="%6$s" rel="author">%7$s</a></span></span>', 'sparkle-vitae' ), 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', 'sparkle-vitae' ), get_the_author() ) ), esc_html( get_the_author() ) ); } endif; /** * Check for the presence of a site avatar, which uses * the email address that's been set in Settings -> General */ if ( ! function_exists( 'sparkle_vitae_site_gravatar' ) ) : function sparkle_vitae_site_gravatar( $size = 42 ) { $sparkle_site_email = get_bloginfo( 'admin_email' ); if ( is_email( $sparkle_site_email ) ) { $sparkle_site_description = esc_attr( get_bloginfo( 'description' ) ); $sparkle_site_avatar = get_avatar( $sparkle_site_email, $size, '', $sparkle_site_description ); if ( ! empty( $sparkle_site_avatar ) ) { return $sparkle_site_avatar; } } } endif; //sparkle_vitae_site_gravatar() /** * Modify the font sizes of WordPress' tag cloud */ if ( ! function_exists( 'sparkle_vitae_widget_tag_cloud_args' ) ) : function sparkle_vitae_widget_tag_cloud_args( $args ) { $args['smallest'] = 12; $args['largest']= 20; $args['unit']= 'px'; return $args; } add_filter( 'widget_tag_cloud_args', 'sparkle_vitae_widget_tag_cloud_args' ); endif; // sparkle_vitae_widget_tag_cloud_args() /** * Adds custom classes to the array of body classes. * * @since Sparkle Vitae 1.2 */ function sparkle_vitae_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', 'sparkle_vitae_body_classes' ); /** * Returns true if a blog has more than 1 category * * @since Sparkle Vitae 1.2 */ function sparkle_vitae_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 = is_countable( $all_the_cool_cats ) ? count( $all_the_cool_cats ) : 0; set_transient( 'all_the_cool_cats', $all_the_cool_cats ); } if ( '1' != $all_the_cool_cats ) { // This blog has more than 1 category so sparkle_vitae_categorized_blog should return true return true; } else { // This blog has only 1 category so sparkle_vitae_categorized_blog should return false return false; } } /** * Flush out the transients used in sparkle_vitae_categorized_blog * * @since Sparkle Vitae 1.2 */ function sparkle_vitae_category_transient_flusher() { // Like, beat it. Dig? delete_transient( 'all_the_cool_cats' ); } add_action( 'edit_category', 'sparkle_vitae_category_transient_flusher' ); add_action( 'save_post', 'sparkle_vitae_category_transient_flusher' ); /** * Filter in a link to a content ID attribute for the next/previous image links on image attachment pages */ function sparkle_vitae_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', 'sparkle_vitae_enhanced_image_navigation' ); function sparkle_vitae_site_title() { //var_dump( $post ); if ( is_page_template( 'resume-template.php' ) || ( 'sv_jobs' == get_post_type() ) || ( 'sv_resume' == get_post_type() ) || ( 'sv_schools' == get_post_type() ) ) { $posts = get_posts( array( 'numberposts' => 1, 'post_type' => 'sv_resume' ) ); $resume = array_pop( $posts ); $sv_resume_meta = get_post_custom( $resume->ID ); if ( isset( $sv_resume_meta['sv_resume_name'][0] ) && '' != $sv_resume_meta['sv_resume_name'][0] ) { echo $sv_resume_meta['sv_resume_name'][0]; } else { echo get_bloginfo( 'name' ); } } else { echo get_bloginfo( 'name' ); } } // sparkle_vitae_site_title()