Make WordPress Core

Ticket #48623: 48623-get-permalink-with-changed-time-zone.patch

File 48623-get-permalink-with-changed-time-zone.patch, 2.4 KB (added by Rarst, 5 years ago)
  • tests/phpunit/tests/date/getPermalink.php

    IDEA additional info:
    Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
    <+>UTF-8
     
     1<?php
     2
     3/**
     4 * @group date
     5 * @group datetime
     6 */
     7class Tests_Date_Get_Permalink extends WP_UnitTestCase {
     8
     9        function tearDown() {
     10                delete_option( 'permalink_structure' );
     11                update_option( 'timezone_string', 'UTC' );
     12                date_default_timezone_set( 'UTC' );
     13
     14                parent::tearDown();
     15        }
     16
     17        /**
     18         * @ticket 48623
     19         */
     20        public function test_should_return_correct_date_permalink_with_changed_time_zone() {
     21                $timezone = 'America/Chicago';
     22                update_option( 'timezone_string', $timezone );
     23                update_option( 'permalink_structure', '/%year%/%monthnum%/%day%/%hour%/%minute%/%second%' );
     24                date_default_timezone_set( 'UTC' );
     25
     26                $post_id = self::factory()->post->create(
     27                        array(
     28                                'post_date'     => '2018-07-22 21:13:23',
     29                                'post_date_gmt' => '2018-07-23 03:13:23',
     30                        )
     31                );
     32
     33                $this->assertEquals( 'http://example.org/2018/07/22/21/13/23', get_permalink( $post_id ) );
     34
     35                date_default_timezone_set( $timezone );
     36                $this->assertEquals( 'http://example.org/2018/07/22/21/13/23', get_permalink( $post_id ) );
     37        }
     38}
  • src/wp-includes/link-template.php

    IDEA additional info:
    Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
    <+>UTF-8
     
    166166        $permalink = apply_filters( 'pre_post_link', $permalink, $post, $leavename );
    167167
    168168        if ( '' != $permalink && ! in_array( $post->post_status, array( 'draft', 'pending', 'auto-draft', 'future' ) ) ) {
    169                 $unixtime = strtotime( $post->post_date );
    170169
    171170                $category = '';
    172171                if ( strpos( $permalink, '%category%' ) !== false ) {
     
    212211                        $author     = $authordata->user_nicename;
    213212                }
    214213
    215                 $date           = explode( ' ', gmdate( 'Y m d H i s', $unixtime ) );
     214                // This is not an API call because in "sample" mode post might not be real post object.
     215                $date = explode( ' ', str_replace( array( '-', ':' ), ' ', $post->post_date ) );
     216
    216217                $rewritereplace =
    217218                array(
    218219                        $date[0],