Make WordPress Core

Changeset 31408


Ignore:
Timestamp:
02/11/2015 03:59:06 AM (9 years ago)
Author:
SergeyBiryukov
Message:

Always pass back the custom classes get_post_class() was called with, even if the post was not found.

props F J Kaiser, Bueltge.
fixes #22271.

Location:
trunk
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/wp-includes/post-template.php

    r31356 r31408  
    405405 */
    406406function get_post_class( $class = '', $post_id = null ) {
    407     $post = get_post($post_id);
     407    $post = get_post( $post_id );
    408408
    409409    $classes = array();
    410410
    411     if ( empty($post) )
     411    if ( $class ) {
     412        if ( ! is_array( $class ) ) {
     413            $class = preg_split( '#\s+#', $class );
     414        }
     415        $classes = array_map( 'esc_attr', $class );
     416    }
     417
     418    if ( ! $post ) {
    412419        return $classes;
     420    }
    413421
    414422    $classes[] = 'post-' . $post->ID;
     
    467475    }
    468476
    469     if ( !empty($class) ) {
    470         if ( !is_array( $class ) )
    471             $class = preg_split('#\s+#', $class);
    472         $classes = array_merge($classes, $class);
    473     }
    474 
    475     $classes = array_map('esc_attr', $classes);
     477    $classes = array_map( 'esc_attr', $classes );
    476478
    477479    /**
  • trunk/tests/phpunit/tests/post/getPostClass.php

    r31280 r31408  
    4646
    4747    /**
     48     * @ticket 22271
     49     */
     50    public function test_with_custom_classes_and_no_post() {
     51        $this->assertEquals( array(), get_post_class( '', null ) );
     52        $this->assertEquals( array( 'foo' ), get_post_class( 'foo', null ) );
     53        $this->assertEquals( array( 'foo', 'bar' ),  get_post_class( array( 'foo', 'bar' ), null ) );
     54    }
     55
     56    /**
    4857     * @group cache
    4958     */
Note: See TracChangeset for help on using the changeset viewer.