get_post_class() – Retrieves an array of the class names for the post container element.

You appear to be a bot. Output may be restricted

Description

Retrieves an array of the class names for the post container element.

The class names are many. If the post is a sticky, then the 'sticky' class name. The class 'hentry' is always added to each post. If the post has a post thumbnail, 'has-post-thumbnail' is added as a class. For each taxonomy that the post belongs to, a class will be added of the format '{$taxonomy}-{$slug}' – eg 'category-foo' or 'my_custom_taxonomy-bar'. The 'post_tag' taxonomy is a special case; the class has the 'tag-' prefix instead of 'post_tag-'. All class names are passed through the filter, post_class , with the list of class names, followed by $class parameter value, with the post ID as the last parameter.

Usage

$string[] = get_post_class( $class, $post_id );

Parameters

$class
( string|string[] ) optional – Space-separated string or array of class names to add to the class list.
$post_id
( int|WP_Post ) optional – Optional. Post ID or post object.

Returns

string[] Array of class names.

Source

File name: wordpress/wp-includes/post-template.php
Lines:

1 to 100 of 102
function get_post_class( $class = '', $post_id = null ) {
  $post = get_post( $post_id );

  $classes = array();

  if ( $class ) {
    if ( ! is_array( $class ) ) {
      $class = preg_split( '#\s+#', $class );
    }
    $classes = array_map( 'esc_attr', $class );
  } else {
    // Ensure that we always coerce class to being an array.
    $class = array();
  }

  if ( ! $post ) {
    return $classes;
  }

  $classes[] = 'post-' . $post->ID;
  if ( ! is_admin() ) {
    $classes[] = $post->post_type;
  }
  $classes[] = 'type-' . $post->post_type;
  $classes[] = 'status-' . $post->post_status;

  // Post Format.
  if ( post_type_supports( $post->post_type, 'post-formats' ) ) {
    $post_format = get_post_format( $post->ID );

    if ( $post_format && ! is_wp_error( $post_format ) ) {
      $classes[] = 'format-' . sanitize_html_class( $post_format );
    } else {
      $classes[] = 'format-standard';
    }
  }

  $post_password_required = post_password_required( $post->ID );

  // Post requires password.
  if ( $post_password_required ) {
    $classes[] = 'post-password-required';
  } elseif ( ! empty( $post->post_password ) ) {
    $classes[] = 'post-password-protected';
  }

  // Post thumbnails.
  if ( current_theme_supports( 'post-thumbnails' ) && has_post_thumbnail( $post->ID ) && ! is_attachment( $post ) && ! $post_password_required ) {
    $classes[] = 'has-post-thumbnail';
  }

  // Sticky for Sticky Posts.
  if ( is_sticky( $post->ID ) ) {
    if ( is_home() && ! is_paged() ) {
      $classes[] = 'sticky';
    } elseif ( is_admin() ) {
      $classes[] = 'status-sticky';
    }
  }

  // hentry for hAtom compliance.
  $classes[] = 'hentry';

  // All public taxonomies.
  $taxonomies = get_taxonomies( array( 'public' => true ) );
  foreach ( (array) $taxonomies as $taxonomy ) {
    if ( is_object_in_taxonomy( $post->post_type, $taxonomy ) ) {
      foreach ( (array) get_the_terms( $post->ID, $taxonomy ) as $term ) {
        if ( empty( $term->slug ) ) {
          continue;
        }

        $term_class = sanitize_html_class( $term->slug, $term->term_id );
        if ( is_numeric( $term_class ) || ! trim( $term_class, '-' ) ) {
          $term_class = $term->term_id;
        }

        // 'post_tag' uses the 'tag' prefix for backward compatibility.
        if ( 'post_tag' === $taxonomy ) {
          $classes[] = 'tag-' . $term_class;
        } else {
          $classes[] = sanitize_html_class( $taxonomy . '-' . $term_class, $taxonomy . '-' . $term->term_id );
        }
      }
    }
  }

  $classes = array_map( 'esc_attr', $classes );

  
/**
 * Filters the list of CSS class names for the current post.
 *
 * @since 2.7.0
 *
 * @param string[] $classes An array of post class names.
 * @param string[] $class   An array of additional class names added to the post.
 * @param int      $post_id The post ID.
 */
  $classes = apply_filters( 'post_class', $classes, $class, $post->ID );

 

 View on GitHub View on Trac