There are two
name query variable
name attribute in an input tag
The Query Variable
name represents the post slug.
For example, I have a blog post on my site:
It has this post name:
I can also visit this URL:
I could also find it via
WP_Query in code using this query:
$query= = new WP_Query([
'name' => 'deployment-and-wordpress'
name="..." attribute on an Input
As for the
name parameter in a form input, those are query variables, the same ones passed to
WP_Query. These are whitelisted internally, but you can refer to the WP_Query documentation for a full list and explanation:
Note that these docs assume you'll be writing PHP code, you may be better off using a
pre_get_posts query to give yourself more options in some situations.
Using other values for the
name input field won't have any effect on the main query, unless you write code to read it in and make changes yourself.
Keep in mind that this won't work if your themes template discards the main post query and creates a fresh brand new one of its own. That would be bad practice for numerous reasons, and I would suggest instead using the
pre_get_posts filter to change what WP fetches from the database in PHP.
A Note on Permalinks and Pretty URLs
When WordPress sees a pretty URL such as:
It uses the rewrite rule system to turn it into:
Then, once that's been done, it processes the result, passing the parameters that are query variables into a
$wp_query = WP_Query([
'name' => get_query_var( 'name' ),
This is why adding parameters via form inputs or in the URL can change the posts WordPress retrieves, e.g. you can add
?s=test to the end of a category archive to search in just that category, or add an
input to change parameters, not just in search but on any WordPress post archive.
A Final Note on The Codex
I would also note, that the codex is old, and was replaced by the dev hub at https://developer.wordpress.org/ many years ago. The Handbook and code reference on that site are far superior.