[ Index ]

PHP Cross Reference of WordPress Trunk (Updated Daily)

Search

title

Body

[close]

/wp-content/themes/twentyseventeen/inc/ -> template-tags.php (source)

   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      global $post; // Modify the global post object before setting up post data.
 153      if ( get_theme_mod( 'panel_' . $id ) ) {
 154          $post = get_post( get_theme_mod( 'panel_' . $id ) );
 155          setup_postdata( $post );
 156          set_query_var( 'panel', $id );
 157  
 158          get_template_part( 'template-parts/page/content', 'front-page-panels' );
 159  
 160          wp_reset_postdata();
 161      } elseif ( is_customize_preview() ) {
 162          // The output placeholder anchor.
 163          printf(
 164              '<article class="panel-placeholder panel twentyseventeen-panel twentyseventeen-panel%1$s" id="panel%1$s">' .
 165              '<span class="twentyseventeen-panel-title">%2$s</span></article>',
 166              $id,
 167              /* translators: %s: The section ID. */
 168              sprintf( __( 'Front Page Section %s Placeholder', 'twentyseventeen' ), $id )
 169          );
 170      }
 171  }
 172  
 173  /**
 174   * Returns true if a blog has more than 1 category.
 175   *
 176   * @return bool
 177   */
 178  function twentyseventeen_categorized_blog() {
 179      $category_count = get_transient( 'twentyseventeen_categories' );
 180  
 181      if ( false === $category_count ) {
 182          // Create an array of all the categories that are attached to posts.
 183          $categories = get_categories(
 184              array(
 185                  'fields'     => 'ids',
 186                  'hide_empty' => 1,
 187                  // We only need to know if there is more than one category.
 188                  'number'     => 2,
 189              )
 190          );
 191  
 192          // Count the number of categories that are attached to the posts.
 193          $category_count = count( $categories );
 194  
 195          set_transient( 'twentyseventeen_categories', $category_count );
 196      }
 197  
 198      // Allow viewing case of 0 or 1 categories in post preview.
 199      if ( is_preview() ) {
 200          return true;
 201      }
 202  
 203      return $category_count > 1;
 204  }
 205  
 206  
 207  /**
 208   * Flushes out the transients used in twentyseventeen_categorized_blog.
 209   */
 210  function twentyseventeen_category_transient_flusher() {
 211      if ( defined( 'DOING_AUTOSAVE' ) && DOING_AUTOSAVE ) {
 212          return;
 213      }
 214      // Like, beat it. Dig?
 215      delete_transient( 'twentyseventeen_categories' );
 216  }
 217  add_action( 'edit_category', 'twentyseventeen_category_transient_flusher' );
 218  add_action( 'save_post', 'twentyseventeen_category_transient_flusher' );
 219  
 220  if ( ! function_exists( 'wp_body_open' ) ) :
 221      /**
 222       * Fires the wp_body_open action.
 223       *
 224       * Added for backward compatibility to support pre-5.2.0 WordPress versions.
 225       *
 226       * @since Twenty Seventeen 2.2
 227       */
 228  	function wp_body_open() {
 229          /**
 230           * Fires after the opening <body> tag.
 231           *
 232           * @since Twenty Seventeen 2.2
 233           */
 234          do_action( 'wp_body_open' );
 235      }
 236  endif;


Generated : Thu Apr 25 08:20:02 2024 Cross-referenced by PHPXref