WordPress.org

Make WordPress Core

Ticket #26937: 26937.11.patch

File 26937.11.patch, 2.6 KB (added by ethitter, 4 years ago)

Fix adjacency for non-"post" post types

  • src/wp-includes/link-template.php

     
    12931293                $query_args = array(
    12941294                        'posts_per_page'      => 1,
    12951295                        'post_status'         => 'publish',
    1296                         'post_type'           => 'post',
     1296                        'post_type'           => $this->current_post->post_type,
    12971297                        'orderby'             => 'date',
    12981298                        'order'               => 'previous' === $this->adjacent ? 'DESC' : 'ASC',
    12991299                        'ignore_sticky_posts' => true,
  • tests/phpunit/tests/link.php

     
    175175                // Need some sample posts to test adjacency
    176176                $post_one = $this->factory->post->create_and_get( array(
    177177                        'post_title' => 'First',
    178                         'post_date' => '2012-01-01 12:00:00'
     178                        'post_date'  => '2012-01-01 12:00:00',
    179179                ) );
    180180
    181181                $post_two = $this->factory->post->create_and_get( array(
    182182                        'post_title' => 'Second',
    183                         'post_date' => '2012-02-01 12:00:00'
     183                        'post_date'  => '2012-02-01 12:00:00',
    184184                ) );
    185185
    186186                $post_three = $this->factory->post->create_and_get( array(
    187187                        'post_title' => 'Third',
    188                         'post_date' => '2012-03-01 12:00:00'
     188                        'post_date'  => '2012-03-01 12:00:00',
    189189                ) );
    190190
    191191                $post_four = $this->factory->post->create_and_get( array(
    192192                        'post_title' => 'Fourth',
    193                         'post_date' => '2012-04-01 12:00:00'
     193                        'post_date'  => '2012-04-01 12:00:00',
    194194                ) );
    195195
     196                // Use pages to test post-type adjacency
     197                $page_one = $this->factory->post->create_and_get( array(
     198                        'post_title' => 'First Page',
     199                        'post_date'  => '2013-01-01 12:00:00',
     200                        'post_type'  => 'page',
     201                ) );
     202
     203                $page_two = $this->factory->post->create_and_get( array(
     204                        'post_title' => 'Second Page',
     205                        'post_date'  => '2013-02-01 12:00:00',
     206                        'post_type'  => 'page',
     207                ) );
     208
    196209                // Add some meta so we can join the postmeta table and query
    197210                add_post_meta( $post_three->ID, 'unit_test_meta', 'waffle' );
    198211
     
    233246                $this->go_to( get_permalink( $post_one->ID ) );
    234247                $this->assertEquals( $post_three, get_adjacent_post( false, null, false ) );
    235248                remove_filter( 'get_next_post_sort', array( $this, 'filter_next_post_sort_limit' ) );
     249
     250                // Test post-type specificity
     251                $this->go_to( get_permalink( $page_one ) );
     252                $this->assertEquals( $page_two, get_adjacent_post( false, null, false ) );
     253
     254                $this->go_to( get_permalink( $page_two ) );
     255                $this->assertEquals( $page_one, get_adjacent_post( false, null, true ) );
    236256        }
    237257
    238258        /**