Changeset 57318
- Timestamp:
- 01/19/2024 11:58:08 PM (14 months ago)
- Location:
- trunk
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/wp-includes/canonical.php
r57310 r57318 551 551 552 552 if ( is_attachment() && ! get_option( 'wp_attachment_pages_enabled' ) ) { 553 $attachment_id = get_query_var( 'attachment_id' ); 554 $attachment_post = get_post( $attachment_id ); 555 $attachment_parent_id = $attachment_post ? $attachment_post->post_parent : 0; 556 557 /* 558 * If an attachment is attached to a post, it inherits the parent post's status. Fetch the 559 * parent post to check its status later. 560 */ 561 if ( $attachment_parent_id ) { 562 $redirect_obj = get_post( $attachment_parent_id ); 563 } 564 $redirect_url = wp_get_attachment_url( $attachment_id ); 565 566 $is_attachment_redirect = true; 553 $attachment_id = get_query_var( 'attachment_id' ); 554 555 if ( current_user_can( 'read_post', $attachment_id ) ) { 556 $redirect_url = wp_get_attachment_url( $attachment_id ); 557 558 $is_attachment_redirect = true; 559 } 567 560 } 568 561 -
trunk/tests/phpunit/tests/canonical.php
r57310 r57318 408 408 409 409 /** 410 * Test canonical redirects for attachment pages when the option is disabled.411 *412 410 * @ticket 57913 413 * @ticket 59866 414 * 415 * @dataProvider data_canonical_attachment_page_redirect_with_option_disabled 416 */ 417 public function test_canonical_attachment_page_redirect_with_option_disabled( $expected, $user = null, $parent_post_status = '' ) { 411 */ 412 public function test_canonical_attachment_page_redirect_with_option_disabled() { 418 413 add_filter( 'pre_option_wp_attachment_pages_enabled', '__return_false' ); 419 420 if ( '' !== $parent_post_status ) {421 $parent_post_id = self::factory()->post->create(422 array(423 'post_status' => $parent_post_status,424 )425 );426 } else {427 $parent_post_id = 0;428 }429 414 430 415 $filename = DIR_TESTDATA . '/images/test-image.jpg'; … … 432 417 $upload = wp_upload_bits( wp_basename( $filename ), null, $contents ); 433 418 434 $attachment_id = $this->_make_attachment( $upload, $parent_post_id ); 435 $attachment_url = wp_get_attachment_url( $attachment_id ); 419 $attachment_id = $this->_make_attachment( $upload ); 436 420 $attachment_page = get_permalink( $attachment_id ); 437 421 438 // Set as anonymous/logged out user.439 if ( null !== $user ) {440 wp_set_current_user( $user );441 }442 443 422 $this->go_to( $attachment_page ); 444 423 445 $url = redirect_canonical( $attachment_page, false ); 446 if ( is_string( $expected ) ) { 447 $expected = str_replace( '%%attachment_url%%', $attachment_url, $expected ); 448 } 424 $url = redirect_canonical( $attachment_page, false ); 425 $expected = wp_get_attachment_url( $attachment_id ); 449 426 450 427 $this->assertSame( $expected, $url ); 451 428 } 452 453 /**454 * Data provider for test_canonical_attachment_page_redirect_with_option_disabled().455 *456 * @return array[]457 */458 public function data_canonical_attachment_page_redirect_with_option_disabled() {459 return array(460 'logged out user, no parent' => array(461 '%%attachment_url%%',462 0,463 ),464 'logged in user, no parent' => array(465 '%%attachment_url%%',466 ),467 'logged out user, private parent' => array(468 null,469 0,470 'private',471 ),472 'logged in user, private parent' => array(473 '%%attachment_url%%',474 null,475 'private',476 ),477 'logged out user, public parent' => array(478 '%%attachment_url%%',479 0,480 'publish',481 ),482 'logged in user, public parent' => array(483 '%%attachment_url%%',484 null,485 'publish',486 ),487 );488 }489 429 }
Note: See TracChangeset
for help on using the changeset viewer.