[ Index ] |
PHP Cross Reference of WordPress Trunk (Updated Daily) |
[Summary view] [Print] [Text view]
1 <?php 2 /** 3 * Custom template tags for this theme. 4 * 5 * Eventually, some of the functionality here could be replaced by core features. 6 * 7 * @package WordPress 8 * @subpackage Twenty_Seventeen 9 * @since Twenty Seventeen 1.0 10 */ 11 12 if ( ! function_exists( 'twentyseventeen_posted_on' ) ) : 13 /** 14 * Prints HTML with meta information for the current post-date/time and author. 15 */ 16 function twentyseventeen_posted_on() { 17 18 // Get the author name; wrap it in a link. 19 $byline = sprintf( 20 /* translators: %s: Post author. */ 21 __( 'by %s', 'twentyseventeen' ), 22 '<span class="author vcard"><a class="url fn n" href="' . esc_url( get_author_posts_url( get_the_author_meta( 'ID' ) ) ) . '">' . get_the_author() . '</a></span>' 23 ); 24 25 // Finally, let's write all of this to the page. 26 echo '<span class="posted-on">' . twentyseventeen_time_link() . '</span><span class="byline"> ' . $byline . '</span>'; 27 } 28 endif; 29 30 31 if ( ! function_exists( 'twentyseventeen_time_link' ) ) : 32 /** 33 * Gets a nicely formatted string for the published date. 34 */ 35 function twentyseventeen_time_link() { 36 $time_string = '<time class="entry-date published updated" datetime="%1$s">%2$s</time>'; 37 if ( get_the_time( 'U' ) !== get_the_modified_time( 'U' ) ) { 38 $time_string = '<time class="entry-date published" datetime="%1$s">%2$s</time><time class="updated" datetime="%3$s">%4$s</time>'; 39 } 40 41 $time_string = sprintf( 42 $time_string, 43 get_the_date( DATE_W3C ), 44 get_the_date(), 45 get_the_modified_date( DATE_W3C ), 46 get_the_modified_date() 47 ); 48 49 // Wrap the time string in a link, and preface it with 'Posted on'. 50 return sprintf( 51 /* translators: %s: Post date. */ 52 __( '<span class="screen-reader-text">Posted on</span> %s', 'twentyseventeen' ), 53 '<a href="' . esc_url( get_permalink() ) . '" rel="bookmark">' . $time_string . '</a>' 54 ); 55 } 56 endif; 57 58 59 if ( ! function_exists( 'twentyseventeen_entry_footer' ) ) : 60 /** 61 * Prints HTML with meta information for the categories, tags and comments. 62 */ 63 function twentyseventeen_entry_footer() { 64 65 $separate_meta = wp_get_list_item_separator(); 66 67 // Get Categories for posts. 68 $categories_list = get_the_category_list( $separate_meta ); 69 70 // Get Tags for posts. 71 $tags_list = get_the_tag_list( '', $separate_meta ); 72 73 // We don't want to output .entry-footer if it will be empty, so make sure it is not. 74 if ( ( ( twentyseventeen_categorized_blog() && $categories_list ) || $tags_list ) || get_edit_post_link() ) { 75 76 echo '<footer class="entry-footer">'; 77 78 if ( 'post' === get_post_type() ) { 79 if ( ( $categories_list && twentyseventeen_categorized_blog() ) || $tags_list ) { 80 echo '<span class="cat-tags-links">'; 81 82 // Make sure there's more than one category before displaying. 83 if ( $categories_list && twentyseventeen_categorized_blog() ) { 84 echo '<span class="cat-links">' . twentyseventeen_get_svg( array( 'icon' => 'folder-open' ) ) . 85 /* translators: Hidden accessibility text. */ 86 '<span class="screen-reader-text">' . __( 'Categories', 'twentyseventeen' ) . '</span>' . 87 $categories_list . 88 '</span>'; 89 } 90 91 if ( $tags_list && ! is_wp_error( $tags_list ) ) { 92 echo '<span class="tags-links">' . twentyseventeen_get_svg( array( 'icon' => 'hashtag' ) ) . 93 /* translators: Hidden accessibility text. */ 94 '<span class="screen-reader-text">' . __( 'Tags', 'twentyseventeen' ) . '</span>' . 95 $tags_list . 96 '</span>'; 97 } 98 99 echo '</span>'; 100 } 101 } 102 103 twentyseventeen_edit_link(); 104 105 echo '</footer> <!-- .entry-footer -->'; 106 } 107 } 108 endif; 109 110 111 if ( ! function_exists( 'twentyseventeen_edit_link' ) ) : 112 /** 113 * Returns an accessibility-friendly link to edit a post or page. 114 * 115 * This also gives a little context about what exactly we're editing 116 * (post or page?) so that users understand a bit more where they are in terms 117 * of the template hierarchy and their content. Helpful when/if the single-page 118 * layout with multiple posts/pages shown gets confusing. 119 */ 120 function twentyseventeen_edit_link() { 121 edit_post_link( 122 sprintf( 123 /* translators: %s: Post title. Only visible to screen readers. */ 124 __( 'Edit<span class="screen-reader-text"> "%s"</span>', 'twentyseventeen' ), 125 get_the_title() 126 ), 127 '<span class="edit-link">', 128 '</span>' 129 ); 130 } 131 endif; 132 133 /** 134 * Displays a front page section. 135 * 136 * @global int|string $twentyseventeencounter Front page section counter. 137 * @global WP_Post $post Global post object. 138 * 139 * @param WP_Customize_Partial $partial Partial associated with a selective refresh request. 140 * @param int $id Front page section to display. 141 */ 142 function twentyseventeen_front_page_section( $partial = null, $id = 0 ) { 143 if ( $partial instanceof WP_Customize_Partial ) { 144 // Find out the ID and set it up during a selective refresh. 145 global $twentyseventeencounter; 146 147 $id = str_replace( 'panel_', '', $partial->id ); 148 149 $twentyseventeencounter = $id; 150 } 151 152 // Only when in Customizer, use a placeholder for an empty panel. 153 $show_panel_placeholder = false; 154 155 global $post; // Modify the global post object before setting up post data. 156 if ( get_theme_mod( 'panel_' . $id ) ) { 157 $post = get_post( get_theme_mod( 'panel_' . $id ) ); 158 setup_postdata( $post ); 159 set_query_var( 'panel', $id ); 160 161 if ( $post && in_array( $post->post_status, array( 'publish', 'private' ), true ) ) { 162 get_template_part( 'template-parts/page/content', 'front-page-panels' ); 163 } elseif ( is_customize_preview() ) { 164 $show_panel_placeholder = true; 165 } 166 167 wp_reset_postdata(); 168 } elseif ( is_customize_preview() ) { 169 $show_panel_placeholder = true; 170 } 171 172 if ( $show_panel_placeholder ) { 173 // The output placeholder anchor. 174 printf( 175 '<article class="panel-placeholder panel twentyseventeen-panel twentyseventeen-panel%1$s" id="panel%1$s">' . 176 '<span class="twentyseventeen-panel-title">%2$s</span></article>', 177 $id, 178 /* translators: %s: The section ID. */ 179 sprintf( __( 'Front Page Section %s Placeholder', 'twentyseventeen' ), $id ) 180 ); 181 } 182 } 183 184 /** 185 * Returns true if a blog has more than 1 category. 186 * 187 * @return bool 188 */ 189 function twentyseventeen_categorized_blog() { 190 $category_count = get_transient( 'twentyseventeen_categories' ); 191 192 if ( false === $category_count ) { 193 // Create an array of all the categories that are attached to posts. 194 $categories = get_categories( 195 array( 196 'fields' => 'ids', 197 'hide_empty' => 1, 198 // We only need to know if there is more than one category. 199 'number' => 2, 200 ) 201 ); 202 203 // Count the number of categories that are attached to the posts. 204 $category_count = count( $categories ); 205 206 set_transient( 'twentyseventeen_categories', $category_count ); 207 } 208 209 // Allow viewing case of 0 or 1 categories in post preview. 210 if ( is_preview() ) { 211 return true; 212 } 213 214 return $category_count > 1; 215 } 216 217 218 /** 219 * Flushes out the transients used in twentyseventeen_categorized_blog. 220 */ 221 function twentyseventeen_category_transient_flusher() { 222 if ( defined( 'DOING_AUTOSAVE' ) && DOING_AUTOSAVE ) { 223 return; 224 } 225 // Like, beat it. Dig? 226 delete_transient( 'twentyseventeen_categories' ); 227 } 228 add_action( 'edit_category', 'twentyseventeen_category_transient_flusher' ); 229 add_action( 'save_post', 'twentyseventeen_category_transient_flusher' ); 230 231 if ( ! function_exists( 'wp_body_open' ) ) : 232 /** 233 * Fires the wp_body_open action. 234 * 235 * Added for backward compatibility to support pre-5.2.0 WordPress versions. 236 * 237 * @since Twenty Seventeen 2.2 238 */ 239 function wp_body_open() { 240 /** 241 * Fires after the opening <body> tag. 242 * 243 * @since Twenty Seventeen 2.2 244 */ 245 do_action( 'wp_body_open' ); 246 } 247 endif;
title
Description
Body
title
Description
Body
title
Description
Body
title
Body
Generated : Sat Jun 21 08:20:01 2025 | Cross-referenced by PHPXref |