Open WP Visibility → Settings. The General section holds the Title separator and the two homepage fields; the Titles & descriptions section holds the nine templates. Variables are lowercase names in curly braces, {title} {sep} {site} being the shipped post template. To change one post, open the WP Visibility sidebar in the editor and type into Search title or Search description; leave either empty to fall back to the template.
Where the settings are
The settings page is one searchable screen, not tabs. Type “template” in the search box to filter to the section.
General
| Field | What it does |
|---|---|
| Title separator | The character {sep} renders. Presets: en dash (the default), em dash, pipe, bullet, middle dot, right guillemet, slash, or Custom… with any character you type. |
| Homepage title | When filled in, this wins over the homepage title template. |
| Homepage meta description | When filled in, this wins over the homepage description template. |
The nine templates
| Template | Default | Applies to |
|---|---|---|
| Homepage title template | {site} {sep} {tagline} |
The front page, unless Homepage title is set or a static front page has its own Search title |
| Post & page title template | {title} {sep} {site} |
Every single post, page and custom post type entry |
| Archive title template | {term_title} {sep} {site} |
Category, tag and custom taxonomy archives, date archives, post type archives |
| Author archive title template | {author} {sep} {site} |
Author pages |
| Search results title template | {search_query} {sep} {site} |
Internal search results |
| 404 page title template | {notfound} {sep} {site} |
The not-found page |
| Homepage description template | {tagline} |
The front page, unless Homepage meta description is set or a static front page has its own Search description |
| Post & page description template | {excerpt} |
Single entries with no description of their own |
| Archive description template | {term_description} |
Term archives |
Two things are not on that list on purpose. There is no per post type template: posts, pages and products share one template, and the archive template covers taxonomy, date and post type archives together. To tell types apart, use {post_type_singular} or {post_type_plural} inside the shared template, or override individual entries. And search results, 404, date, author and post type archive pages have no description template, so they print no description tag.
On page 2 and later of an archive, or of a post split into pages, the separator and “Page 2” are appended to the title for you. No variable is needed for that.
Every variable
Names are case-insensitive. An unknown name renders as nothing, and when a variable renders empty, such as {tagline} on a site with no tagline, the leftover separator is removed with it.
| Variable | Renders |
|---|---|
{site} |
The site title |
{tagline} |
The site tagline |
{sep} |
The title separator |
{title} |
The post or page title |
{excerpt} |
The excerpt, or the content when there is no excerpt, with tags, blocks and shortcodes stripped and cut at a word to 160 characters or fewer, plus an ellipsis when cut |
{author} |
The author’s display name |
{date}, {modified} |
Publish and modified dates in the site’s date format |
{term_title} |
The term name on a term archive, the post type name on a post type archive, the author on an author page, WordPress’s own archive title on a date archive |
{term_description} |
The term description, with tags stripped and cut the same way |
{search_query} |
The visitor’s search terms |
{notfound} |
The words “Page not found” |
{page} |
“Page 2 of 5” on page 2 and later, otherwise nothing |
{pagenumber} |
Just the number, on page 2 and later |
{post_type_singular}, {post_type_plural} |
The post type’s labels |
{category} |
The first category |
{custom_field:KEY} |
The post meta value stored under KEY |
{currentyear}, {currentdate} |
Today’s year, and today’s date in the site’s format |
Developers can add variables with the wpvis_template_variable filter.
Examples
On a site named Garden Notes with the slash as separator, the post “How to Prune Tomatoes” renders as:
How to Prune Tomatoes / Garden Notes
To add the date the post was last updated, change the post template to {title} {sep} {modified} {sep} {site}. To brand product pages differently without a second template, use {title} {sep} {post_type_singular} {sep} {site}, which reads “Trowel / Product / Garden Notes” on a product and “How to Prune Tomatoes / Post / Garden Notes” on a post. To pull a subtitle stored in a custom field named subtitle, use {title}: {custom_field:subtitle} {sep} {site}.
Override one post
In the block editor, click the WP Visibility icon in the top toolbar to open the sidebar. The Search appearance panel opens first with a preview and two fields, Search title and Search description. Type plain text, or use variables; a per-post value is a template too, so {title} | {currentyear} works. The preview approximates the rendered result and shows a character meter with advisory bands of 30 to 60 for titles and 70 to 160 for descriptions. Variables the editor cannot resolve on the client are left out of the preview and render on the live page.
Leave a field empty to use the template. With the default description template, an empty description falls back to the excerpt, then to the content.
The classic editor shows the same two fields in a WP Visibility metabox, which saves them when you save the post, not on autosave. In either editor, revisions do not store them.
Categories and tags
Open a term under Posts → Categories or Tags and edit it. WP Visibility adds Search title and Search description to the edit form. Empty means the archive title and description templates; the default description template uses the term description. Quick edit does not show these fields.
From the command line
wp visibility settings get separator
wp visibility settings set separator "|"
wp visibility settings set title_singular "{title} {sep} {site}"
wp visibility set 123 --title="A better title" --description="A better description"
Setting keys: separator, homepage_title, homepage_description, title_home, title_singular, title_archive, title_author, title_search, title_404, desc_home, desc_singular, desc_archive.
An assistant connected through the plugin makes the same per-post changes with the update-post-seo ability; the templates themselves are site settings, changed through the update-settings ability or by you. With the Autopilot module on and Assistant changes set to Hold for my review (the default), both abilities send their changes to the review queue instead of applying them.