WordPress.org

Make WordPress Core

Ticket #23074: 23074.4.diff

File 23074.4.diff, 2.1 KB (added by MikeHansenMe, 6 years ago)
  • tests/phpunit/tests/post/redirects.php

     
     1<?php
     2class Tests_Post_Redirects extends WP_UnitTestCase {
     3
     4        var $post;
     5
     6        function setUp() {
     7                parent::setUp();
     8                $post = array(
     9                        'post_name'             => 'foo',
     10                        'post_title'    => 'Foo',
     11                        'post_status'   => 'publish'
     12                );
     13                $post['ID'] = wp_insert_post( $post );
     14                $this->post = $post;
     15        }
     16
     17        function test_old_slugs_private() {
     18                $id = $this->post['ID'];
     19                $before_post = get_post( $id );
     20                $this->post['post_name'] = 'foobar';
     21                $this->post['post_status'] = 'private';
     22                wp_update_post( $this->post );
     23                $old_slugs = (array) get_post_meta( $id, '_wp_old_slug' );
     24                $this->AssertTrue( in_array( 'foo', $old_slugs ) );
     25        }
     26
     27        function test_old_slugs_publish() {
     28                $id = $this->post['ID'];
     29                $this->post['post_name'] = 'foobar';
     30                $this->post['post_status'] = 'private';
     31                wp_update_post( $this->post );
     32                $this->post['post_name'] = 'foo';
     33                $this->post['post_status'] = 'publish';
     34                wp_update_post( $this->post );
     35                $old_slugs = (array) get_post_meta( $id, '_wp_old_slug' );
     36                $this->AssertFalse( in_array( 'foo', $old_slugs ) );
     37        }
     38
     39}
     40 No newline at end of file
  • src/wp-includes/post-functions.php

     
    51835183        }
    51845184
    51855185        // We're only concerned with published, non-hierarchical objects.
    5186         if ( ! ( 'publish' === $post->post_status || ( 'attachment' === get_post_type( $post ) && 'inherit' === $post->post_status ) ) || is_post_type_hierarchical( $post->post_type ) ) {
     5186        if ( is_post_type_hierarchical( $post->post_type ) ) {
    51875187                return;
    51885188        }
    51895189
     5190        $valid_status = array(
     5191                'publish',
     5192                'private',
     5193        );
     5194        if ( ! in_array( $post->post_status, $valid_status ) ) {
     5195                return;
     5196        }
     5197
    51905198        $old_slugs = (array) get_post_meta( $post_id, '_wp_old_slug' );
    51915199
    51925200        // If we haven't added this old slug before, add it now.