~canonical-sysadmins/wordpress/5.0.2

« back to all changes in this revision

Viewing changes to wp-content/themes/twentyfifteen/inc/template-tags.php

  • Committer: Barry Price
  • Date: 2018-12-12 05:08:33 UTC
  • mfrom: (1.2.8 upstream)
  • Revision ID: barry.price@canonical.com-20181212050833-y090hmrbmlxy37aa
Merge WP5.0 from upstream

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
<?php
2
 
/**
3
 
 * Custom template tags for Twenty Fifteen
4
 
 *
5
 
 * Eventually, some of the functionality here could be replaced by core features.
6
 
 *
7
 
 * @package WordPress
8
 
 * @subpackage Twenty_Fifteen
9
 
 * @since Twenty Fifteen 1.0
10
 
 */
11
 
 
12
 
if ( ! function_exists( 'twentyfifteen_comment_nav' ) ) :
13
 
/**
14
 
 * Display navigation to next/previous comments when applicable.
15
 
 *
16
 
 * @since Twenty Fifteen 1.0
17
 
 */
18
 
function twentyfifteen_comment_nav() {
19
 
        // Are there comments to navigate through?
20
 
        if ( get_comment_pages_count() > 1 && get_option( 'page_comments' ) ) :
21
 
        ?>
22
 
        <nav class="navigation comment-navigation" role="navigation">
23
 
                <h2 class="screen-reader-text"><?php _e( 'Comment navigation', 'twentyfifteen' ); ?></h2>
24
 
                <div class="nav-links">
25
 
                        <?php
26
 
                                if ( $prev_link = get_previous_comments_link( __( 'Older Comments', 'twentyfifteen' ) ) ) :
27
 
                                        printf( '<div class="nav-previous">%s</div>', $prev_link );
28
 
                                endif;
29
 
 
30
 
                                if ( $next_link = get_next_comments_link( __( 'Newer Comments', 'twentyfifteen' ) ) ) :
31
 
                                        printf( '<div class="nav-next">%s</div>', $next_link );
32
 
                                endif;
33
 
                        ?>
34
 
                </div><!-- .nav-links -->
35
 
        </nav><!-- .comment-navigation -->
36
 
        <?php
37
 
        endif;
38
 
}
39
 
endif;
40
 
 
41
 
if ( ! function_exists( 'twentyfifteen_entry_meta' ) ) :
42
 
/**
43
 
 * Prints HTML with meta information for the categories, tags.
44
 
 *
45
 
 * @since Twenty Fifteen 1.0
46
 
 */
47
 
function twentyfifteen_entry_meta() {
48
 
        if ( is_sticky() && is_home() && ! is_paged() ) {
49
 
                printf( '<span class="sticky-post">%s</span>', __( 'Featured', 'twentyfifteen' ) );
50
 
        }
51
 
 
52
 
        $format = get_post_format();
53
 
        if ( current_theme_supports( 'post-formats', $format ) ) {
54
 
                printf( '<span class="entry-format">%1$s<a href="%2$s">%3$s</a></span>',
55
 
                        sprintf( '<span class="screen-reader-text">%s </span>', _x( 'Format', 'Used before post format.', 'twentyfifteen' ) ),
56
 
                        esc_url( get_post_format_link( $format ) ),
57
 
                        get_post_format_string( $format )
58
 
                );
59
 
        }
60
 
 
61
 
        if ( in_array( get_post_type(), array( 'post', 'attachment' ) ) ) {
62
 
                $time_string = '<time class="entry-date published updated" datetime="%1$s">%2$s</time>';
63
 
 
64
 
                if ( get_the_time( 'U' ) !== get_the_modified_time( 'U' ) ) {
65
 
                        $time_string = '<time class="entry-date published" datetime="%1$s">%2$s</time><time class="updated" datetime="%3$s">%4$s</time>';
66
 
                }
67
 
 
68
 
                $time_string = sprintf( $time_string,
69
 
                        esc_attr( get_the_date( 'c' ) ),
70
 
                        get_the_date(),
71
 
                        esc_attr( get_the_modified_date( 'c' ) ),
72
 
                        get_the_modified_date()
73
 
                );
74
 
 
75
 
                printf( '<span class="posted-on"><span class="screen-reader-text">%1$s </span><a href="%2$s" rel="bookmark">%3$s</a></span>',
76
 
                        _x( 'Posted on', 'Used before publish date.', 'twentyfifteen' ),
77
 
                        esc_url( get_permalink() ),
78
 
                        $time_string
79
 
                );
80
 
        }
81
 
 
82
 
        if ( 'post' == get_post_type() ) {
83
 
                if ( is_singular() || is_multi_author() ) {
84
 
                        printf( '<span class="byline"><span class="author vcard"><span class="screen-reader-text">%1$s </span><a class="url fn n" href="%2$s">%3$s</a></span></span>',
85
 
                                _x( 'Author', 'Used before post author name.', 'twentyfifteen' ),
86
 
                                esc_url( get_author_posts_url( get_the_author_meta( 'ID' ) ) ),
87
 
                                get_the_author()
88
 
                        );
89
 
                }
90
 
 
91
 
                $categories_list = get_the_category_list( _x( ', ', 'Used between list items, there is a space after the comma.', 'twentyfifteen' ) );
92
 
                if ( $categories_list && twentyfifteen_categorized_blog() ) {
93
 
                        printf( '<span class="cat-links"><span class="screen-reader-text">%1$s </span>%2$s</span>',
94
 
                                _x( 'Categories', 'Used before category names.', 'twentyfifteen' ),
95
 
                                $categories_list
96
 
                        );
97
 
                }
98
 
 
99
 
                $tags_list = get_the_tag_list( '', _x( ', ', 'Used between list items, there is a space after the comma.', 'twentyfifteen' ) );
100
 
                if ( $tags_list && ! is_wp_error( $tags_list ) ) {
101
 
                        printf( '<span class="tags-links"><span class="screen-reader-text">%1$s </span>%2$s</span>',
102
 
                                _x( 'Tags', 'Used before tag names.', 'twentyfifteen' ),
103
 
                                $tags_list
104
 
                        );
105
 
                }
106
 
        }
107
 
 
108
 
        if ( is_attachment() && wp_attachment_is_image() ) {
109
 
                // Retrieve attachment metadata.
110
 
                $metadata = wp_get_attachment_metadata();
111
 
 
112
 
                printf( '<span class="full-size-link"><span class="screen-reader-text">%1$s </span><a href="%2$s">%3$s &times; %4$s</a></span>',
113
 
                        _x( 'Full size', 'Used before full size attachment link.', 'twentyfifteen' ),
114
 
                        esc_url( wp_get_attachment_url() ),
115
 
                        $metadata['width'],
116
 
                        $metadata['height']
117
 
                );
118
 
        }
119
 
 
120
 
        if ( ! is_single() && ! post_password_required() && ( comments_open() || get_comments_number() ) ) {
121
 
                echo '<span class="comments-link">';
122
 
                /* translators: %s: post title */
123
 
                comments_popup_link( sprintf( __( 'Leave a comment<span class="screen-reader-text"> on %s</span>', 'twentyfifteen' ), get_the_title() ) );
124
 
                echo '</span>';
125
 
        }
126
 
}
127
 
endif;
128
 
 
129
 
/**
130
 
 * Determine whether blog/site has more than one category.
131
 
 *
132
 
 * @since Twenty Fifteen 1.0
133
 
 *
134
 
 * @return bool True of there is more than one category, false otherwise.
135
 
 */
136
 
function twentyfifteen_categorized_blog() {
137
 
        if ( false === ( $all_the_cool_cats = get_transient( 'twentyfifteen_categories' ) ) ) {
138
 
                // Create an array of all the categories that are attached to posts.
139
 
                $all_the_cool_cats = get_categories( array(
140
 
                        'fields'     => 'ids',
141
 
                        'hide_empty' => 1,
142
 
 
143
 
                        // We only need to know if there is more than one category.
144
 
                        'number'     => 2,
145
 
                ) );
146
 
 
147
 
                // Count the number of categories that are attached to the posts.
148
 
                $all_the_cool_cats = count( $all_the_cool_cats );
149
 
 
150
 
                set_transient( 'twentyfifteen_categories', $all_the_cool_cats );
151
 
        }
152
 
 
153
 
        if ( $all_the_cool_cats > 1 || is_preview() ) {
154
 
                // This blog has more than 1 category so twentyfifteen_categorized_blog should return true.
155
 
                return true;
156
 
        } else {
157
 
                // This blog has only 1 category so twentyfifteen_categorized_blog should return false.
158
 
                return false;
159
 
        }
160
 
}
161
 
 
162
 
/**
163
 
 * Flush out the transients used in {@see twentyfifteen_categorized_blog()}.
164
 
 *
165
 
 * @since Twenty Fifteen 1.0
166
 
 */
167
 
function twentyfifteen_category_transient_flusher() {
168
 
        // Like, beat it. Dig?
169
 
        delete_transient( 'twentyfifteen_categories' );
170
 
}
171
 
add_action( 'edit_category', 'twentyfifteen_category_transient_flusher' );
172
 
add_action( 'save_post',     'twentyfifteen_category_transient_flusher' );
173
 
 
174
 
if ( ! function_exists( 'twentyfifteen_post_thumbnail' ) ) :
175
 
/**
176
 
 * Display an optional post thumbnail.
177
 
 *
178
 
 * Wraps the post thumbnail in an anchor element on index views, or a div
179
 
 * element when on single views.
180
 
 *
181
 
 * @since Twenty Fifteen 1.0
182
 
 */
183
 
function twentyfifteen_post_thumbnail() {
184
 
        if ( post_password_required() || is_attachment() || ! has_post_thumbnail() ) {
185
 
                return;
186
 
        }
187
 
 
188
 
        if ( is_singular() ) :
189
 
        ?>
190
 
 
191
 
        <div class="post-thumbnail">
192
 
                <?php the_post_thumbnail(); ?>
193
 
        </div><!-- .post-thumbnail -->
194
 
 
195
 
        <?php else : ?>
196
 
 
197
 
        <a class="post-thumbnail" href="<?php the_permalink(); ?>" aria-hidden="true">
198
 
                <?php
199
 
                        the_post_thumbnail( 'post-thumbnail', array( 'alt' => get_the_title() ) );
200
 
                ?>
201
 
        </a>
202
 
 
203
 
        <?php endif; // End is_singular()
204
 
}
205
 
endif;
206
 
 
207
 
if ( ! function_exists( 'twentyfifteen_get_link_url' ) ) :
208
 
/**
209
 
 * Return the post URL.
210
 
 *
211
 
 * Falls back to the post permalink if no URL is found in the post.
212
 
 *
213
 
 * @since Twenty Fifteen 1.0
214
 
 *
215
 
 * @see get_url_in_content()
216
 
 *
217
 
 * @return string The Link format URL.
218
 
 */
219
 
function twentyfifteen_get_link_url() {
220
 
        $has_url = get_url_in_content( get_the_content() );
221
 
 
222
 
        return $has_url ? $has_url : apply_filters( 'the_permalink', get_permalink() );
223
 
}
224
 
endif;
225
 
 
226
 
if ( ! function_exists( 'twentyfifteen_excerpt_more' ) && ! is_admin() ) :
227
 
/**
228
 
 * Replaces "[...]" (appended to automatically generated excerpts) with ... and a 'Continue reading' link.
229
 
 *
230
 
 * @since Twenty Fifteen 1.0
231
 
 *
232
 
 * @return string 'Continue reading' link prepended with an ellipsis.
233
 
 */
234
 
function twentyfifteen_excerpt_more( $more ) {
235
 
        $link = sprintf( '<a href="%1$s" class="more-link">%2$s</a>',
236
 
                esc_url( get_permalink( get_the_ID() ) ),
237
 
                /* translators: %s: Name of current post */
238
 
                sprintf( __( 'Continue reading %s', 'twentyfifteen' ), '<span class="screen-reader-text">' . get_the_title( get_the_ID() ) . '</span>' )
239
 
                );
240
 
        return ' &hellip; ' . $link;
241
 
}
242
 
add_filter( 'excerpt_more', 'twentyfifteen_excerpt_more' );
243
 
endif;
244
 
 
245
 
if ( ! function_exists( 'twentyfifteen_the_custom_logo' ) ) :
246
 
/**
247
 
 * Displays the optional custom logo.
248
 
 *
249
 
 * Does nothing if the custom logo is not available.
250
 
 *
251
 
 * @since Twenty Fifteen 1.5
252
 
 */
253
 
function twentyfifteen_the_custom_logo() {
254
 
        if ( function_exists( 'the_custom_logo' ) ) {
255
 
                the_custom_logo();
256
 
        }
257
 
}
258
 
endif;