In get_permalink(), don't resolve to pretty permalink if post has 'future' status.

We already do this for other non-public statuses, to prevent leaking non-public
information about unpublished posts.

Props e.mazovetskiy, CalEvans.
Fixes #30910.

git-svn-id: https://develop.svn.wordpress.org/trunk@31114 602fd350-edb4-49c9-b593-d223f7449a82
This commit is contained in:
Boone Gorges
2015-01-09 16:39:56 +00:00
parent 68191cc15c
commit d5c9eb41d7
3 changed files with 45 additions and 4 deletions

View File

@@ -286,4 +286,46 @@ class Tests_Link extends WP_UnitTestCase {
$relative_link = wp_make_link_relative( $link );
$this->assertEquals( '/this-is-a-test/?redirect=https://example.org/a-different-test-post/', $relative_link );
}
/**
* @ticket 30910
*/
public function test_get_permalink_should_not_reveal_post_name_for_post_with_post_status_future() {
update_option( 'permalink_structure','/%year%/%monthnum%/%day%/%postname%/' );
flush_rewrite_rules();
$p = $this->factory->post->create( array(
'post_status' => 'publish',
'post_date' => strftime( '%Y-%m-%d %H:%M:%S', strtotime( '+1 day' ) )
) );
$non_pretty_permalink = add_query_arg( 'p', $p, trailingslashit( home_url() ) );
$this->assertEquals( $non_pretty_permalink, get_permalink( $p ) );
}
/**
* @ticket 30910
*/
public function test_get_permalink_should_not_reveal_post_name_for_cpt_with_post_status_future() {
update_option( 'permalink_structure','/%year%/%monthnum%/%day%/%postname%/' );
register_post_type( 'wptests_pt', array( 'public' => true ) );
flush_rewrite_rules();
$p = $this->factory->post->create( array(
'post_status' => 'future',
'post_type' => 'wptests_pt',
'post_date' => strftime( '%Y-%m-%d %H:%M:%S', strtotime( '+1 day' ) )
) );
$non_pretty_permalink = add_query_arg( array(
'post_type' => 'wptests_pt',
'p' => $p,
), trailingslashit( home_url() ) );
$this->assertEquals( $non_pretty_permalink, get_permalink( $p ) );
}
}

View File

@@ -195,8 +195,7 @@ class Tests_Query_PostStatus extends WP_UnitTestCase {
$q = new WP_Query( array(
'posts_per_page' => -1,
) );
global $wpdb;
//print_r( $wpdb->get_results( "SELECT * FROM $wpdb->posts" ) );
$this->assertContains( self::$author_privatefoo_post, wp_list_pluck( $q->posts, 'ID' ) );
$this->assertContains( self::$editor_privatefoo_post, wp_list_pluck( $q->posts, 'ID' ) );
}