Created
January 14, 2015 05:58
-
-
Save carolinan/ccfde0d20914cdfd999b to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?php | |
/** | |
* Custom template tags for this theme. | |
* | |
* @package miranda | |
*/ | |
if ( ! function_exists( 'miranda_paging_nav' ) ) : | |
/** | |
* Display navigation to next/previous set of posts when applicable. | |
*/ | |
function miranda_paging_nav() { | |
// Don't print empty markup if there's only one page. | |
if ( $GLOBALS['wp_query']->max_num_pages < 2 ) { | |
return; | |
} | |
?> | |
<nav class="navigation paging-navigation" role="navigation"> | |
<h1 class="screen-reader-text"><?php _e( 'Posts navigation', 'miranda' ); ?></h1> | |
<div class="nav-links"> | |
<?php if ( get_next_posts_link() ) : ?> | |
<?php next_posts_link( '<span class="nav-previous">' . __( 'Older posts', 'miranda' ) . '</span>' ); ?> | |
<?php endif; ?> | |
<?php if ( get_previous_posts_link() ) : ?> | |
<?php previous_posts_link( '<span class="nav-next">' . __( 'Newer posts', 'miranda' ) . '</span>' ); ?> | |
<?php endif; ?> | |
</div><!-- .nav-links --> | |
</nav><!-- .navigation --> | |
<?php | |
} | |
endif; | |
if ( ! function_exists( 'miranda_post_nav' ) ) : | |
/** | |
* Display navigation to next/previous post when applicable. | |
*/ | |
function miranda_post_nav() { | |
// Don't print empty markup if there's nowhere to navigate. | |
$previous = ( is_attachment() ) ? get_post( get_post()->post_parent ) : get_adjacent_post( false, '', true ); | |
$next = get_adjacent_post( false, '', false ); | |
if ( ! $next && ! $previous ) { | |
return; | |
} | |
?> | |
<nav class="navigation post-navigation" role="navigation"> | |
<h1 class="screen-reader-text"><?php _e( 'Post navigation', 'miranda' ); ?></h1> | |
<div class="nav-links"> | |
<?php | |
previous_post_link( '%link', '<span class="nav-previous">' . _x( '%title','Previous post link', 'miranda' ) . '</span>' ); | |
next_post_link( '%link' , '<span class="nav-next">' . _x( '%title','Next post link','miranda' ) . '</span>' ); | |
?> | |
</div><!-- .nav-links --> | |
</nav><!-- .navigation --> | |
<?php | |
} | |
endif; | |
if ( ! function_exists( 'miranda_posted_on' ) ) : | |
/** | |
* Prints HTML with meta information for the current post-date/time and author. | |
*/ | |
function miranda_posted_on() { | |
if ( !is_front_page() && !is_home() ){ | |
miranda_breadcrumbs(); | |
} | |
$time_string = '<time class="entry-date published updated" datetime="%1$s">%2$s</time>'; | |
if ( get_the_time( 'U' ) !== get_the_modified_time( 'U' ) ) { | |
$time_string = '<time class="entry-date published" datetime="%1$s">%2$s</time><time class="updated" datetime="%3$s">%4$s</time>'; | |
} | |
$time_string = sprintf( $time_string, | |
esc_attr( get_the_date( 'c' ) ), | |
esc_html( get_the_date() ), | |
esc_attr( get_the_modified_date( 'c' ) ), | |
esc_html( get_the_modified_date() ) | |
); | |
$posted_on = sprintf( | |
_x( 'Posted on %s', 'post date', 'miranda' ), $time_string); | |
$byline = sprintf( | |
_x( 'by %s', 'post author', 'miranda' ), | |
'<span class="author vcard"><a class="url fn n" href="' . esc_url( get_author_posts_url( get_the_author_meta( 'ID' ) ) ) . '">' . esc_html( get_the_author() ) . '</a></span>' | |
); | |
echo '<span class="posted-on">' . $posted_on . '</span><span class="byline"> ' . $byline . '</span>'; | |
} | |
endif; | |
if ( ! function_exists( 'miranda_entry_footer' ) ) : | |
/** | |
* Prints HTML with meta information for the categories, tags and comments. | |
*/ | |
function miranda_entry_footer() { | |
// Hide category and tag text for pages. | |
if ( 'post' == get_post_type() ) { | |
/* translators: used between list items, there is a space after the comma */ | |
$categories_list = get_the_category_list( __( ', ', 'miranda' ) ); | |
if ( $categories_list && miranda_categorized_blog() ) { | |
printf( '<span class="cat-links"> ' . __( 'Categories: %1$s', 'miranda' ) . '</span>', $categories_list ); | |
} | |
/* translators: used between list items, there is a space after the comma */ | |
$tags_list = get_the_tag_list( '', __( ', ', 'miranda' ) ); | |
if ( $tags_list ) { | |
printf( '<span class="tags-links"> ' . __( 'Tags: %1$s', 'miranda' ) . '</span>', $tags_list ); | |
} | |
} | |
if ( ! is_single() && ! post_password_required() && ( comments_open() || get_comments_number() ) ) { | |
echo '<span class="comments-link">'; | |
comments_popup_link( __( 'Leave a comment', 'miranda' ), __( '1 Comment', 'miranda' ), __( '% Comments', 'miranda' ) ); | |
echo '</span>'; | |
} | |
/* translators: % is the post title */ | |
edit_post_link( sprintf( __( 'Edit %s', 'miranda' ), get_the_title() ), '<span class="edit-link">', '</span>' ); | |
/* Display jetpack's share if it's active*/ | |
if ( function_exists( 'sharing_display' ) ) { | |
echo sharing_display(); | |
} | |
/* Display jetpack's like if it's active */ | |
if ( class_exists( 'Jetpack_Likes' ) ) { | |
$miranda_custom_likes = new Jetpack_Likes; | |
echo $miranda_custom_likes->post_likes( '' ); | |
} | |
} | |
endif; | |
/* Excerpts */ | |
function miranda_excerpt_more( $more ) { | |
global $id; | |
return '… '. miranda_continue_reading( $id ); | |
} | |
add_filter( 'excerpt_more', 'miranda_excerpt_more',100 ); | |
function miranda_custom_excerpt_more( $output ) { | |
if ( has_excerpt() && !is_attachment() ) { | |
global $id; | |
$output .= ' '. miranda_continue_reading( $id ); // insert a blank space. | |
} | |
return $output; | |
} | |
add_filter( 'get_the_excerpt', 'miranda_custom_excerpt_more',100 ); | |
function miranda_continue_reading( $id ) { | |
return '<a class="continue" href="'.get_permalink( $id ).'">'. sprintf( __( 'Continue Reading %s', 'miranda' ), get_the_title( $id ) ) . '</a>'; | |
} | |
if ( ! function_exists( 'the_archive_title' ) ) : | |
/** | |
* Shim for `the_archive_title()`. | |
* | |
* Display the archive title based on the queried object. | |
* | |
* @todo Remove this function when WordPress 4.3 is released. | |
* | |
* @param string $before Optional. Content to prepend to the title. Default empty. | |
* @param string $after Optional. Content to append to the title. Default empty. | |
*/ | |
function the_archive_title( $before = '', $after = '' ) { | |
if ( is_category() ) { | |
$title = sprintf( __( 'Category: %s', 'miranda' ), single_cat_title( '', false ) ); | |
} elseif ( is_tag() ) { | |
$title = sprintf( __( 'Tag: %s', 'miranda' ), single_tag_title( '', false ) ); | |
} elseif ( is_author() ) { | |
$title = sprintf( __( 'Author: %s', 'miranda' ), '<span class="vcard">' . get_the_author() . '</span>' ); | |
} elseif ( is_year() ) { | |
$title = sprintf( __( 'Year: %s', 'miranda' ), get_the_date( _x( 'Y', 'yearly archives date format', 'miranda' ) ) ); | |
} elseif ( is_month() ) { | |
$title = sprintf( __( 'Month: %s', 'miranda' ), get_the_date( _x( 'F Y', 'monthly archives date format', 'miranda' ) ) ); | |
} elseif ( is_day() ) { | |
$title = sprintf( __( 'Day: %s', 'miranda' ), get_the_date( _x( 'F j, Y', 'daily archives date format', 'miranda' ) ) ); | |
} elseif ( is_post_type_archive() ) { | |
$title = sprintf( __( 'Archives: %s', 'miranda' ), post_type_archive_title( '', false ) ); | |
} elseif ( is_tax() ) { | |
$tax = get_taxonomy( get_queried_object()->taxonomy ); | |
/* translators: 1: Taxonomy singular name, 2: Current taxonomy term */ | |
$title = sprintf( __( '%1$s: %2$s', 'miranda' ), $tax->labels->singular_name, single_term_title( '', false ) ); | |
} else { | |
$title = __( 'Archives', 'miranda' ); | |
} | |
/** | |
* Filter the archive title. | |
* | |
* @param string $title Archive title to be displayed. | |
*/ | |
$title = apply_filters( 'get_the_archive_title', $title ); | |
if ( ! empty( $title ) ) { | |
echo $before . $title . $after; | |
} | |
} | |
endif; | |
if ( ! function_exists( 'the_archive_description' ) ) : | |
/** | |
* Shim for `the_archive_description()`. | |
* | |
* Display category, tag, or term description. | |
* | |
* @todo Remove this function when WordPress 4.3 is released. | |
* | |
* @param string $before Optional. Content to prepend to the description. Default empty. | |
* @param string $after Optional. Content to append to the description. Default empty. | |
*/ | |
function the_archive_description( $before = '', $after = '' ) { | |
$description = apply_filters( 'get_the_archive_description', term_description() ); | |
if ( ! empty( $description ) ) { | |
/** | |
* Filter the archive description. | |
* | |
* @see term_description() | |
* | |
* @param string $description Archive description to be displayed. | |
*/ | |
echo $before . $description . $after; | |
} | |
} | |
endif; | |
/** | |
* Returns true if a blog has more than 1 category. | |
* | |
* @return bool | |
*/ | |
function miranda_categorized_blog() { | |
if ( false === ( $all_the_cool_cats = get_transient( 'miranda_categories' ) ) ) { | |
// Create an array of all the categories that are attached to posts. | |
$all_the_cool_cats = get_categories( array( | |
'fields' => 'ids', | |
'hide_empty' => 1, | |
// We only need to know if there is more than one category. | |
'number' => 2, | |
) ); | |
// Count the number of categories that are attached to the posts. | |
$all_the_cool_cats = count( $all_the_cool_cats ); | |
set_transient( 'miranda_categories', $all_the_cool_cats ); | |
} | |
if ( $all_the_cool_cats > 1 ) { | |
// This blog has more than 1 category so miranda_categorized_blog should return true. | |
return true; | |
} else { | |
// This blog has only 1 category so miranda_categorized_blog should return false. | |
return false; | |
} | |
} | |
/** | |
* Flush out the transients used in miranda_categorized_blog. | |
*/ | |
function miranda_category_transient_flusher() { | |
if ( defined( 'DOING_AUTOSAVE' ) && DOING_AUTOSAVE ) { | |
return; | |
} | |
// Like, beat it. Dig? | |
delete_transient( 'miranda_categories' ); | |
} | |
add_action( 'edit_category', 'miranda_category_transient_flusher' ); | |
add_action( 'save_post', 'miranda_category_transient_flusher' ); | |
function miranda_breadcrumbs(){ | |
if ( get_theme_mod( 'miranda_breadcrumb' ) <> '') { | |
?> | |
<nav class="crumbs" aria-label="breadcrumb" role="navigation"> | |
<span class="screen-reader-text"><?php _e('You are here: ', 'miranda'); ?></span> | |
<ul> | |
<li><a href="<?php echo esc_url( home_url( '/' ) ); ?>"><?php _e('Home', 'miranda'); ?></a></li> | |
<?php | |
if ( count( get_the_category() ) ) : | |
$miranda_category = get_the_category(); | |
if($miranda_category[0]){ | |
echo '<li><i>/</i> '; | |
echo '<a href="'.get_category_link($miranda_category[0]->term_id ).'">'.$miranda_category[0]->cat_name.'</a></li>'; | |
} | |
endif; | |
echo '<li><i>/</i> '; | |
?> | |
<?php the_title(); ?> | |
</li> | |
</ul> | |
</nav> | |
<?php | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment