123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122 |
- <?php
- /**
- * Custom template tags for this theme.
- *
- * Eventually, some of the functionality here could be replaced by core features.
- *
- * @package Sakurairo
- */
- if ( ! function_exists( 'akina_posted_on' ) ) :
- /**
- * Prints HTML with meta information for the current post-date/time and author.
- */
- function akina_posted_on() {
- $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', 'sakurairo' ),
- '<a href="' . esc_url( get_permalink() ) . '" rel="bookmark">' . $time_string . '</a>'
- );
- $byline = sprintf(
- _x( 'by %s', 'post author', 'sakurairo' ),
- '<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>'; // WPCS: XSS OK.
- }
- endif;
- if ( ! function_exists( 'akina_entry_footer' ) ) :
- /**
- * Prints HTML with meta information for the categories, tags and comments.
- */
- function akina_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( __( ', ', 'sakurairo' ) );
- if ( $categories_list && akina_categorized_blog() ) {
- printf( '<span class="cat-links">' . __( 'Posted in %1$s', 'sakurairo' ) . '</span>', $categories_list ); // WPCS: XSS OK.
- }
- /* translators: used between list items, there is a space after the comma */
- $tags_list = get_the_tag_list( '', __( ', ', 'sakurairo' ) );
- if ( $tags_list ) {
- printf( '<span class="tags-links">' . __( 'Tagged %1$s', 'sakurairo' ) . '</span>', $tags_list ); // WPCS: XSS OK.
- }
- }
- if ( ! is_single() && ! post_password_required() && ( comments_open() || get_comments_number() ) ) {
- echo '<span class="comments-link">';
- /* translators: %s: post title */
- comments_popup_link( sprintf( wp_kses( __( 'Leave a Comment<span class="screen-reader-text"> on %s</span>', 'sakurairo' ), array( 'span' => array( 'class' => array() ) ) ), get_the_title() ) );
- echo '</span>';
- }
- edit_post_link(
- sprintf(
- /* translators: %s: Name of current post */
- __( 'Edit %s', 'sakurairo' ),
- the_title( '<span class="screen-reader-text">"', '"</span>', false )
- ),
- '<span class="edit-link">',
- '</span>'
- );
- }
- endif;
- /**
- * Returns true if a blog has more than 1 category.
- *
- * @return bool
- */
- function akina_categorized_blog() {
- if ( false === ( $all_the_cool_cats = get_transient( 'akina_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( 'akina_categories', $all_the_cool_cats );
- }
- if ( $all_the_cool_cats > 1 ) {
- // This blog has more than 1 category so akina_categorized_blog should return true.
- return true;
- } else {
- // This blog has only 1 category so akina_categorized_blog should return false.
- return false;
- }
- }
- /**
- * Flush out the transients used in akina_categorized_blog.
- */
- function akina_category_transient_flusher() {
- if ( defined( 'DOING_AUTOSAVE' ) && DOING_AUTOSAVE ) {
- return;
- }
- // Like, beat it. Dig?
- delete_transient( 'akina_categories' );
- }
- add_action( 'edit_category', 'akina_category_transient_flusher' );
- add_action( 'save_post', 'akina_category_transient_flusher' );
|