get_post_class

Definition:
function get_post_class( $class = '', $post_id = null ) {}

Retrieve the classes for the post div as an array.
The class names are add are many. If the post is a sticky, then the ‘sticky’ class name. The class ‘hentry’ is always added to each post. For each category, the class will be added with ‘category-‘ with category slug is added. The tags are the same way as the categories with ‘tag-‘ before the tag slug. All classes are passed through the filter, ‘post_class’ with the list of classes, followed by $class parameter value, with the post ID as the last parameter.

Parameters

  • string|array $class: One or more classes to add to the class list.
  • int $post_id: An optional post ID.

Return values

returns:Array of classes.

Defined filters

  • post_class
    apply_filters('post_class', $classes, $class, $post->ID)

Source code

function get_post_class( $class = '', $post_id = null ) {

	$post = get_post($post_id);



	$classes = array();



	if ( empty($post) )

		return $classes;



	$classes[] = 'post-' . $post->ID;

	$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 requires password

	if ( post_password_required($post->ID) )

		$classes[] = 'post-password-required';



	// sticky for Sticky Posts

	if ( is_sticky($post->ID) && is_home() && !is_paged() )

		$classes[] = 'sticky';



	// hentry for hAtom compliance

	$classes[] = 'hentry';



	// Categories

	if ( is_object_in_taxonomy( $post->post_type, 'category' ) ) {

		foreach ( (array) get_the_category($post->ID) as $cat ) {

			if ( empty($cat->slug ) )

				continue;

			$classes[] = 'category-' . sanitize_html_class($cat->slug, $cat->term_id);

		}

	}



	// Tags

	if ( is_object_in_taxonomy( $post->post_type, 'post_tag' ) ) {

		foreach ( (array) get_the_tags($post->ID) as $tag ) {

			if ( empty($tag->slug ) )

				continue;

			$classes[] = 'tag-' . sanitize_html_class($tag->slug, $tag->term_id);

		}

	}



	if ( !empty($class) ) {

		if ( !is_array( $class ) )

			$class = preg_split('#\s+#', $class);

		$classes = array_merge($classes, $class);

	}



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



	return apply_filters('post_class', $classes, $class, $post->ID);

}

1581

No comments yet... Be the first to leave a reply!

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

%d bloggers like this: