Title: _resolve_template_for_new_post
Published: February 3, 2022
Last modified: May 20, 2026

---

# _resolve_template_for_new_post( WP_Query $wp_query )

## In this article

 * [Description](https://developer.wordpress.org/reference/functions/_resolve_template_for_new_post/?output_format=md#description)
 * [Parameters](https://developer.wordpress.org/reference/functions/_resolve_template_for_new_post/?output_format=md#parameters)
 * [Source](https://developer.wordpress.org/reference/functions/_resolve_template_for_new_post/?output_format=md#source)
 * [Related](https://developer.wordpress.org/reference/functions/_resolve_template_for_new_post/?output_format=md#related)
 * [Changelog](https://developer.wordpress.org/reference/functions/_resolve_template_for_new_post/?output_format=md#changelog)

[ Back to top](https://developer.wordpress.org/reference/functions/_resolve_template_for_new_post/?output_format=md#wp--skip-link--target)

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

Sets the current [WP_Query](https://developer.wordpress.org/reference/classes/wp_query/)
to return auto-draft posts.

## 󠀁[Description](https://developer.wordpress.org/reference/functions/_resolve_template_for_new_post/?output_format=md#description)󠁿

The auto-draft status indicates a new post, so allow the the [WP_Query](https://developer.wordpress.org/reference/classes/wp_query/)
instance to return an auto-draft post for template resolution when editing a new
post.

## 󠀁[Parameters](https://developer.wordpress.org/reference/functions/_resolve_template_for_new_post/?output_format=md#parameters)󠁿

 `$wp_query`[WP_Query](https://developer.wordpress.org/reference/classes/wp_query/)
required

Current [WP_Query](https://developer.wordpress.org/reference/classes/wp_query/) 
instance, passed by reference.

## 󠀁[Source](https://developer.wordpress.org/reference/functions/_resolve_template_for_new_post/?output_format=md#source)󠁿

    ```php
    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 = $wp_query->query['page_id'] ?? null;

    	// Posts, including custom post types.
    	$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' );
    	}
    }
    ```

[View all references](https://developer.wordpress.org/reference/files/wp-includes/block-template.php/)
[View on Trac](https://core.trac.wordpress.org/browser/tags/7.0/src/wp-includes/block-template.php#L463)
[View on GitHub](https://github.com/WordPress/wordpress-develop/blob/7.0/src/wp-includes/block-template.php#L463-L486)

## 󠀁[Related](https://developer.wordpress.org/reference/functions/_resolve_template_for_new_post/?output_format=md#related)󠁿

| Uses | Description | 
| [WP_Query::is_main_query()](https://developer.wordpress.org/reference/classes/wp_query/is_main_query/)`wp-includes/class-wp-query.php` |

Determines whether the query is the main query.

  | 
| [WP_Query::set()](https://developer.wordpress.org/reference/classes/wp_query/set/)`wp-includes/class-wp-query.php` |

Sets the value of a query variable.

  | 
| [current_user_can()](https://developer.wordpress.org/reference/functions/current_user_can/)`wp-includes/capabilities.php` |

Returns whether the current user has the specified capability.

  | 
| [remove_filter()](https://developer.wordpress.org/reference/functions/remove_filter/)`wp-includes/plugin.php` |

Removes a callback function from a filter hook.

  | 
| [get_post()](https://developer.wordpress.org/reference/functions/get_post/)`wp-includes/post.php` |

Retrieves post data given a post ID or post object.

  |

[Show 3 more](https://developer.wordpress.org/reference/functions/_resolve_template_for_new_post/?output_format=md#)
[Show less](https://developer.wordpress.org/reference/functions/_resolve_template_for_new_post/?output_format=md#)

## 󠀁[Changelog](https://developer.wordpress.org/reference/functions/_resolve_template_for_new_post/?output_format=md#changelog)󠁿

| Version | Description | 
| [5.9.0](https://developer.wordpress.org/reference/since/5.9.0/) | Introduced. |

## User Contributed Notes

You must [log in](https://login.wordpress.org/?redirect_to=https%3A%2F%2Fdeveloper.wordpress.org%2Freference%2Ffunctions%2F_resolve_template_for_new_post%2F)
before being able to contribute a note or feedback.