wordpress / latest / functions / _resolve_template_for_new_post.html

_resolve_template_for_new_post( WP_Query $wp_query )

This function’s access is marked private. This means it is not intended for use by plugin or theme developers, only in other core functions. It is listed here for completeness.

Sets the current WP_Query to return auto-draft posts.

Description

The auto-draft status indicates a new post, so allow the the WP_Query instance to return an auto-draft post for template resolution when editing a new post.

Parameters

$wp_query WP_Query Required
Current WP_Query instance, passed by reference.

Source

File: wp-includes/block-template.php. View all references

function _resolve_template_for_new_post( $wp_query ) {
	if ( ! $wp_query->is_main_query() ) {
		return;
	}

	remove_filter( 'pre_get_posts', '_resolve_template_for_new_post' );

	// Pages.
	$page_id = isset( $wp_query->query['page_id'] ) ? $wp_query->query['page_id'] : null;

	// Posts, including custom post types.
	$p = isset( $wp_query->query['p'] ) ? $wp_query->query['p'] : null;

	$post_id = $page_id ? $page_id : $p;
	$post    = get_post( $post_id );

	if (
		$post &&
		'auto-draft' === $post->post_status &&
		current_user_can( 'edit_post', $post->ID )
	) {
		$wp_query->set( 'post_status', 'auto-draft' );
	}
}

Uses

Uses Description

Changelog

Version Description
5.9.0 Introduced.

© 2003–2022 WordPress Foundation
Licensed under the GNU GPLv2+ License.
https://developer.wordpress.org/reference/functions/_resolve_template_for_new_post