Skip to content
WP Visibility

Everyday SEO

Set Title and Description Templates

Nine templates on the settings screen build the default titles and descriptions; any post, page or term can override its own on its edit screen, and an empty field means the template.

Updated September 27, 2026

Docs

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.