for posts and comments. add_theme_support( 'automatic-feed-links' ); // This theme supports a variety of post formats. add_theme_support( 'post-formats', array( 'aside', 'image', 'link', 'quote', 'status' ) ); /*One popular technique for asides is to add an “8” character at the end of the post that links to the post permalink.*/ add_filter( 'the_content', 'my_aside_to_infinity_and_beyond', 9 ); // run before wpautop function my_aside_to_infinity_and_beyond( $content ) { if ( has_post_format( 'aside' ) && !is_singular() ) $content .= ' '; return $content; } // This theme uses wp_nav_menu() in one location. register_nav_menu( 'primary', __( 'Primary Menu', 'alowa' ) ); /* * This theme supports custom background color and image, and here * we also set up the default background color. */ add_theme_support( 'custom-background', array( 'default-color' => 'e6e6e6', ) ); // This theme uses a custom image size for featured images, displayed on "standard" posts. add_theme_support( 'post-thumbnails' ); set_post_thumbnail_size( 624, 9999 ); // Unlimited height, soft crop } add_action( 'after_setup_theme', 'alowa_setup' ); /** * Adds support for a custom header image. */ require( get_template_directory() . '/includes/custom-header.php' ); /** * Returns the Google font stylesheet URL if available. * * The use of Open Sans by default is localized. For languages that use * characters not supported by the font, the font can be disabled. * * @since Alowa 1.0 * * @return string Font stylesheet or empty string if disabled. */ function alowa_get_font_url() { $font_url = ''; /* translators: If there are characters in your language that are not supported by Open Sans, translate this to 'off'. Do not translate into your own language. */ if ( 'off' !== _x( 'on', 'Open Sans font: on or off', 'alowa' ) ) { $subsets = 'latin,latin-ext'; /* translators: To add an additional Open Sans character subset specific to your language, translate this to 'greek', 'cyrillic' or 'vietnamese'. Do not translate into your own language. */ $subset = _x( 'no-subset', 'Open Sans font: add new subset (greek, cyrillic, vietnamese)', 'alowa' ); if ( 'cyrillic' == $subset ) $subsets .= ',cyrillic,cyrillic-ext'; elseif ( 'greek' == $subset ) $subsets .= ',greek,greek-ext'; elseif ( 'vietnamese' == $subset ) $subsets .= ',vietnamese'; $protocol = is_ssl() ? 'https' : 'http'; $query_args = array( 'family' => 'Open+Sans:400italic,700italic,400,700', 'subset' => $subsets, ); $font_url = add_query_arg( $query_args, "$protocol://fonts.googleapis.com/css" ); } return $font_url; } /** * Enqueues scripts and styles for front-end. * * @since Alowa 1.0 */ function alowa_scripts_styles() { global $wp_styles; /* * Adds JavaScript to pages with the comment form to support * sites with threaded comments (when in use). */ if ( is_singular() && comments_open() && get_option( 'thread_comments' ) ) wp_enqueue_script( 'comment-reply' ); /* * Adds JavaScript for handling the navigation menu hide-and-show behavior. */ wp_enqueue_script( 'alowa-navigation', get_template_directory_uri() . '/includes/js/navigation.js', array(), '1.0', true ); $font_url = alowa_get_font_url(); if ( ! empty( $font_url ) ) wp_enqueue_style( 'alowa-fonts', esc_url_raw( $font_url ), array(), null ); /* * Loads our main stylesheet. */ wp_enqueue_style( 'alowa-style', get_stylesheet_uri() ); /* * Loads the Internet Explorer specific stylesheet. */ wp_enqueue_style( 'alowa-ie', get_template_directory_uri() . '/css/ie.css', array( 'alowa-style' ), '20121010' ); $wp_styles->add_data( 'alowa-ie', 'conditional', 'lt IE 9' ); } add_action( 'wp_enqueue_scripts', 'alowa_scripts_styles' ); /** * Adds additional stylesheets to the TinyMCE editor if needed. * * @uses alowa_get_font_url() To get the Google Font stylesheet URL. * * @since Alowa 1.0 * * @param string $mce_css CSS path to load in TinyMCE. * @return string */ function alowa_mce_css( $mce_css ) { $font_url = alowa_get_font_url(); if ( empty( $font_url ) ) return $mce_css; if ( ! empty( $mce_css ) ) $mce_css .= ','; $mce_css .= esc_url_raw( str_replace( ',', '%2C', $font_url ) ); return $mce_css; } add_filter( 'mce_css', 'alowa_mce_css' ); /** * Creates a nicely formatted and more specific title element text * for output in head of document, based on current view. * * @since Alowa 1.0 * * @param string $title Default title text for current view. * @param string $sep Optional separator. * @return string Filtered title. */ function alowa_wp_title( $title, $sep ) { global $paged, $page; if ( is_feed() ) return $title; // Add the site name. $title .= get_bloginfo( 'name' ); // Add the site description for the home/front page. $site_description = get_bloginfo( 'description', 'display' ); if ( $site_description && ( is_home() || is_front_page() ) ) $title = "$title $sep $site_description"; // Add a page number if necessary. if ( $paged >= 2 || $page >= 2 ) $title = "$title $sep " . sprintf( __( 'Page %s', 'alowa' ), max( $paged, $page ) ); return $title; } add_filter( 'wp_title', 'alowa_wp_title', 10, 2 ); /** * Makes our wp_nav_menu() fallback -- wp_page_menu() -- show a home link. * * @since Alowa 1.0 */ function alowa_page_menu_args( $args ) { if ( ! isset( $args['show_home'] ) ) $args['show_home'] = true; return $args; } add_filter( 'wp_page_menu_args', 'alowa_page_menu_args' ); /** * Registers our main widget area and the front page widget areas. * * @since Alowa 1.0 */ function alowa_widgets_init() { register_sidebar( array( 'name' => __( 'Main Sidebar', 'alowa' ), 'id' => 'sidebar-1', 'description' => __( 'Appears on posts and pages except the optional Front Page template, which has its own widgets', 'alowa' ), 'before_widget' => '', 'before_title' => '

', 'after_title' => '

', ) ); register_sidebar( array( 'name' => __( 'Footer Widget Area', 'alowa' ), 'id' => 'sidebar-2', 'description' => __( 'Appears on Footer area.', 'alowa' ), 'before_widget' => '', 'before_title' => '

', 'after_title' => '

', ) ); } add_action( 'widgets_init', 'alowa_widgets_init' ); if ( ! function_exists( 'alowa_content_nav' ) ) : /** * Displays navigation to next/previous pages when applicable. * * @since Alowa 1.0 */ function alowa_content_nav( $html_id ) { global $wp_query; if ( $wp_query->max_num_pages > 1 ) : ?> comment_type ) : case 'pingback' : case 'trackback' : // Display trackbacks differently than normal comments. ?>
  • id="comment-">

    ', '' ); ?>

  • id="li-comment-">
    %1$s %2$s', get_comment_author_link(), // If current post author is also comment author, make it known visually. ( $comment->user_id === $post->post_author ) ? '' . __( 'Post author', 'alowa' ) . '' : '' ); printf( '', esc_url( get_comment_link( $comment->comment_ID ) ), get_comment_time( 'c' ), /* translators: 1: date, 2: time */ sprintf( __( '%1$s at %2$s', 'alowa' ), get_comment_date(), get_comment_time() ) ); ?>
    comment_approved ) : ?>

    __( 'Reply', 'alowa' ), 'after' => ' ', 'depth' => $depth, 'max_depth' => $args['max_depth'] ) ) ); ?>
    ', '

    ' ); ?>
    ', esc_url( get_permalink() ), esc_attr( get_the_time() ), esc_attr( get_the_date( 'c' ) ), esc_html( get_the_date() ) ); $author = sprintf( '', esc_url( get_author_posts_url( get_the_author_meta( 'ID' ) ) ), esc_attr( sprintf( __( 'View all posts by %s', 'alowa' ), get_the_author() ) ), get_the_author() ); // Translators: 1 is category, 2 is tag, 3 is the date and 4 is the author's name. if ( $tag_list ) { $utility_text = __( 'This entry was posted in %1$s and tagged %2$s on %3$s by %4$s.', 'alowa' ); } elseif ( $categories_list ) { $utility_text = __( 'This entry was posted in %1$s on %3$s by %4$s.', 'alowa' ); } else { $utility_text = __( 'This entry was posted on %3$s by %4$s.', 'alowa' ); } printf( $utility_text, $categories_list, $tag_list, $date, $author ); } endif; /** * Extends the default WordPress body class to denote: * 1. Using a full-width layout, when no active widgets in the sidebar * or full-width template. * 2. Front Page template: thumbnail in use and number of sidebars for * widget areas. * 3. White or empty background color to change the layout and spacing. * 4. Custom fonts enabled. * 5. Single or multiple authors. * * @since Alowa 1.0 * * @param array Existing class values. * @return array Filtered class values. */ function alowa_body_class( $classes ) { $background_color = get_background_color(); $background_image = get_background_image(); if ( ! is_active_sidebar( 'sidebar-1' ) || is_page_template( 'page-templates/full-width.php' ) ) $classes[] = 'full-width'; if ( is_page_template( 'page-templates/front-page.php' ) ) { $classes[] = 'template-front-page'; if ( has_post_thumbnail() ) $classes[] = 'has-post-thumbnail'; if ( is_active_sidebar( 'sidebar-2' ) && is_active_sidebar( 'sidebar-3' ) ) $classes[] = 'two-sidebars'; } if ( empty( $background_image ) ) { if ( empty( $background_color ) ) $classes[] = 'custom-background-empty'; elseif ( in_array( $background_color, array( 'fff', 'ffffff' ) ) ) $classes[] = 'custom-background-white'; } // Enable custom font class only if the font CSS is queued to load. if ( wp_style_is( 'alowa-fonts', 'queue' ) ) $classes[] = 'custom-font-enabled'; if ( ! is_multi_author() ) $classes[] = 'single-author'; return $classes; } add_filter( 'body_class', 'alowa_body_class' ); /** * Adjusts content_width value for full-width and single image attachment * templates, and when there are no active widgets in the sidebar. * * @since Alowa 1.0 */ function alowa_content_width() { if ( is_page_template( 'page-templates/full-width.php' ) || is_attachment() || ! is_active_sidebar( 'sidebar-1' ) ) { global $content_width; $content_width = 960; } } add_action( 'template_redirect', 'alowa_content_width' ); /** * Add postMessage support for site title and description for the Theme Customizer. * * @since Alowa 1.0 * * @param WP_Customize_Manager $wp_customize Theme Customizer object. * @return void */ function alowa_customize_register( $wp_customize ) { $wp_customize->get_setting( 'blogname' )->transport = 'postMessage'; $wp_customize->get_setting( 'blogdescription' )->transport = 'postMessage'; $wp_customize->get_setting( 'header_textcolor' )->transport = 'postMessage'; } add_action( 'customize_register', 'alowa_customize_register' ); /** * Binds JS handlers to make Theme Customizer preview reload changes asynchronously. * * @since Alowa 1.0 */ function alowa_customize_preview_js() { wp_enqueue_script( 'alowa-customizer', get_template_directory_uri() . '/includes/js/theme-customizer.js', array( 'customize-preview' ), '20130301', true ); } add_action( 'customize_preview_init', 'alowa_customize_preview_js' ); //Highlight keywords in search results within the_excerpt and the_title function alowa_highlight_results($text){ if(is_search()){ $sr = get_query_var('s'); $keys = explode(" ",$sr); $text = preg_replace('/('.implode('|', $keys) .')/iu', ''.$sr.'', $text); } return $text; } add_filter('the_excerpt', 'alowa_highlight_results'); add_filter('the_title', 'alowa_highlight_results'); /** * @Function Name: alowa_breadcrumbs() * @Version: 1.0 -- Tested up to WordPress version 3.4 * @Date: May 9, 2012 * @Description: WordPress Breadcrumb navigation function. * Adding a breadcrumb trail to the theme without a plugin. * This code does not support multi-page split numbering, * custom post types and custom taxonomies. */ function alowa_breadcrumbs() { $showOnHome = 0; // 1 - show breadcrumbs on the homepage, 0 - don't show $delimiter = '»'; // delimiter between crumbs $home = 'Home'; // text for the 'Home' link $showCurrent = 1; // 1 - show current post/page title in breadcrumbs, 0 - don't show $before = ''; // tag before the current crumb $after = ''; // tag after the current crumb //Display only the first 30 characters of the post title. $maxLength= 30; global $post; $homeLink = home_url(); if (is_home() || is_front_page()) { if ($showOnHome == 1) echo '
    ' . $home . '
    '; } else { echo '
    ' . $home . ' ' . $delimiter . ' '; if ( is_category() ) { $thisCat = get_category(get_query_var('cat'), false); if ($thisCat->parent != 0) echo get_category_parents($thisCat->parent, TRUE, ' ' . $delimiter . ' '); echo $before . 'Archive by category "' . single_cat_title('', false) . '"' . $after; } elseif ( is_search() ) { echo $before . 'Search results for "' . get_search_query() . '"' . $after; } elseif ( is_day() ) { echo '' . get_the_time('Y') . ' ' . $delimiter . ' '; echo '' . get_the_time('F') . ' ' . $delimiter . ' '; echo $before . get_the_time('d') . $after; } elseif ( is_month() ) { echo '' . get_the_time('Y') . ' ' . $delimiter . ' '; echo $before . get_the_time('F') . $after; } elseif ( is_year() ) { echo $before . get_the_time('Y') . $after; } elseif ( is_single() && !is_attachment() ) { if ( get_post_type() != 'post' ) { $post_type = get_post_type_object(get_post_type()); $slug = $post_type->rewrite; echo '' . $post_type->labels->singular_name . ''; if ($showCurrent == 1) echo ' ' . $delimiter . ' ' . $before . get_the_title() . $after; } else { $cat = get_the_category(); $cat = $cat[0]; $cats = get_category_parents($cat, TRUE, ' ' . $delimiter . ' '); if ($showCurrent == 0) $cats = preg_replace("#^(.+)\s$delimiter\s$#", "$1", $cats); echo $cats; if ($showCurrent == 1) //Display partial post title, in order to save space. if (strlen(get_the_title()) >= $maxLength) { //If the title is long, then don't display it all. echo $before . trim(substr(get_the_title(), 0, $maxLength)) . ' ...' . $after; } else { echo $before . get_the_title() . $after; } } } elseif ( !is_single() && !is_page() && get_post_type() != 'post' && !is_404() ) { $post_type = get_post_type_object(get_post_type()); echo $before . $post_type->labels->singular_name . $after; } elseif ( is_attachment() ) { $parent = get_post($post->post_parent); $cat = get_the_category($parent->ID); $cat = $cat[0]; echo get_category_parents($cat, TRUE, ' ' . $delimiter . ' '); echo '' . $parent->post_title . ''; if ($showCurrent == 1) //Display partial post title, in order to save space. if (strlen(get_the_title()) >= $maxLength) { //If the title is long, then don't display it all. echo ' ' . $delimiter . ' ' . $before . trim(substr(get_the_title(), 0, $maxLength)) . ' ...' . $after; } else { echo ' ' . $delimiter . ' ' . $before . get_the_title() . $after; } } elseif ( is_page() && !$post->post_parent ) { if ($showCurrent == 1) echo $before . get_the_title() . $after; } elseif ( is_page() && $post->post_parent ) { $parent_id = $post->post_parent; $breadcrumbs = array(); while ($parent_id) { $page = get_page($parent_id); $breadcrumbs[] = '' . get_the_title($page->ID) . ''; $parent_id = $page->post_parent; } $breadcrumbs = array_reverse($breadcrumbs); for ($i = 0; $i < count($breadcrumbs); $i++) { echo $breadcrumbs[$i]; if ($i != count($breadcrumbs)-1) echo ' ' . $delimiter . ' '; } if ($showCurrent == 1) echo ' ' . $delimiter . ' ' . $before . get_the_title() . $after; } elseif ( is_tag() ) { echo $before . 'Posts tagged: "' . single_tag_title('', false) . '"' . $after; } elseif ( is_author() ) { global $author; $userdata = get_userdata($author); echo $before . 'Archived Article(s) by Author: ' . $userdata->display_name . $after; } elseif ( is_404() ) { echo $before . 'Error 404' . $after; } if ( get_query_var('paged') ) { if ( is_category() || is_day() || is_month() || is_year() || is_search() || is_tag() || is_author() ) echo ' ('; echo 'Page' . ' ' . get_query_var('paged'); if ( is_category() || is_day() || is_month() || is_year() || is_search() || is_tag() || is_author() ) echo ')'; } echo '
    '; } } /** * @Function Name: my_login_stylesheet() * @Version: 1.0 -- Tested up to WordPress version 3.5 * @Date: December 13, 2012 * @Description: * see http://codex.wordpress.org/Customizing_the_Login_Form#Styling_Your_Login */ function my_login_stylesheet() { ?> 'http://s.wordpress.com/mshots/v1/', "url" => 'http://', "alt" => 'Screenshot', "width" => '200', "height" => '150' ), $atts)); return $screen = '' . $alt . ''; } add_shortcode("screenshot", "wps_screenshot"); //Shortcode for HTML5 video in posts function alowa_html5_video($atts, $content = null) { extract(shortcode_atts(array( "src" => '', "width" => '', "height" => '' ), $atts)); return '