Changeset 46580 for trunk/src/wp-includes/general-template.php
- Timestamp:
- 10/25/2019 01:06:29 PM (5 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/wp-includes/general-template.php
r46290 r46580 2566 2566 } 2567 2567 2568 $datetime = get_post_datetime( $post ); 2568 $source = ( $gmt ) ? 'gmt' : 'local'; 2569 $datetime = get_post_datetime( $post, 'date', $source ); 2569 2570 2570 2571 if ( false === $datetime ) { … … 2607 2608 * The object will be set to the timezone from WordPress settings. 2608 2609 * 2610 * For legacy reasons, this function allows to choose to instantiate from local or UTC time in database. 2611 * Normally this should make no difference to the result. However, the values might get out of sync in database, 2612 * typically because of timezone setting changes. The parameter ensures the ability to reproduce backwards 2613 * compatible behaviors in such cases. 2614 * 2609 2615 * @since 5.3.0 2610 2616 * 2611 * @param int|WP_Post $post Optional. WP_Post object or ID. Default is global `$post` object. 2612 * @param string $field Optional. Post field to use. Accepts 'date' or 'modified'. 2617 * @param int|WP_Post $post Optional. WP_Post object or ID. Default is global `$post` object. 2618 * @param string $field Optional. Published or modified time to use from database. Accepts 'date' or 'modified'. 2619 * Default 'date'. 2620 * @param string $source Optional. Local or UTC time to use from database. Accepts 'local' or 'gmt'. 2621 * Default 'local'. 2613 2622 * @return DateTimeImmutable|false Time object on success, false on failure. 2614 2623 */ 2615 function get_post_datetime( $post = null, $field = 'date' ) {2624 function get_post_datetime( $post = null, $field = 'date', $source = 'local' ) { 2616 2625 $post = get_post( $post ); 2617 2626 … … 2620 2629 } 2621 2630 2622 $time = ( 'modified' === $field ) ? $post->post_modified : $post->post_date; 2631 $wp_timezone = wp_timezone(); 2632 2633 if ( 'gmt' === $source ) { 2634 $time = ( 'modified' === $field ) ? $post->post_modified_gmt : $post->post_date_gmt; 2635 $timezone = new DateTimeZone( 'UTC' ); 2636 } else { 2637 $time = ( 'modified' === $field ) ? $post->post_modified : $post->post_date; 2638 $timezone = $wp_timezone; 2639 } 2623 2640 2624 2641 if ( empty( $time ) || '0000-00-00 00:00:00' === $time ) { … … 2626 2643 } 2627 2644 2628 return date_create_immutable_from_format( 'Y-m-d H:i:s', $time, wp_timezone() ); 2645 $datetime = date_create_immutable_from_format( 'Y-m-d H:i:s', $time, $timezone ); 2646 2647 if ( false === $datetime ) { 2648 return false; 2649 } 2650 2651 return $datetime->setTimezone( $wp_timezone ); 2629 2652 } 2630 2653 … … 2638 2661 * 2639 2662 * @param int|WP_Post $post Optional. WP_Post object or ID. Default is global `$post` object. 2640 * @param string $field Optional. Post field to use. Accepts 'date' or 'modified'. 2663 * @param string $field Optional. Published or modified time to use from database. Accepts 'date' or 'modified'. 2664 * Default 'date'. 2641 2665 * @return int|false Unix timestamp on success, false on failure. 2642 2666 */ … … 2730 2754 } 2731 2755 2732 $datetime = get_post_datetime( $post, 'modified' ); 2756 $source = ( $gmt ) ? 'gmt' : 'local'; 2757 $datetime = get_post_datetime( $post, 'modified', $source ); 2733 2758 2734 2759 if ( false === $datetime ) {
Note: See TracChangeset
for help on using the changeset viewer.