WordPress Version: 5.5
//
// Hooks.
//
/**
* Hook for managing future post transitions to published.
*
* @since 2.3.0
* @access private
*
* @see wp_clear_scheduled_hook()
* @global wpdb $wpdb WordPress database abstraction object.
*
* @param string $new_status New post status.
* @param string $old_status Previous post status.
* @param WP_Post $post Post object.
*/
function _transition_post_status($new_status, $old_status, $post)
{
global $wpdb;
if ('publish' !== $old_status && 'publish' === $new_status) {
// Reset GUID if transitioning to publish and it is empty.
if ('' === get_the_guid($post->ID)) {
$wpdb->update($wpdb->posts, array('guid' => get_permalink($post->ID)), array('ID' => $post->ID));
}
/**
* Fires when a post's status is transitioned from private to published.
*
* @since 1.5.0
* @deprecated 2.3.0 Use {@see 'private_to_publish'} instead.
*
* @param int $post_id Post ID.
*/
do_action_deprecated('private_to_published', array($post->ID), '2.3.0', 'private_to_publish');
}
// If published posts changed clear the lastpostmodified cache.
if ('publish' === $new_status || 'publish' === $old_status) {
foreach (array('server', 'gmt', 'blog') as $timezone) {
wp_cache_delete("lastpostmodified:{$timezone}", 'timeinfo');
wp_cache_delete("lastpostdate:{$timezone}", 'timeinfo');
wp_cache_delete("lastpostdate:{$timezone}:{$post->post_type}", 'timeinfo');
}
}
if ($new_status !== $old_status) {
wp_cache_delete(_count_posts_cache_key($post->post_type), 'counts');
wp_cache_delete(_count_posts_cache_key($post->post_type, 'readable'), 'counts');
}
// Always clears the hook in case the post status bounced from future to draft.
wp_clear_scheduled_hook('publish_future_post', array($post->ID));
}