Skip to content Skip to navigation

Manage Titles & Metas

Manage all your title tags

Go to SEO, Titles & Metas.

Browse all the tabs, and set the titles you want for your homepage, posts, pages, post types, archives…

Available dynamic variables

You can use these dynamic variables in your metadata:

%%sep%% Separator. Set in SEO > Titles & Metas > Home. Defaults to - if empty.
%%sitetitle%% Site title, from Settings > General (alias: %%sitename%%)
%%tagline%% Tagline, from Settings > General (alias: %%sitedesc%%)
%%post_title%% Post title (post, page, custom post type, alias: %%title%%)
%%post_excerpt%% Post excerpt, limited to 50 words. Falls back to the beginning of the content when no excerpt is set. Since SEOPress 10.4, when the post content is empty because the page is built with Bricks, the text of the Bricks elements is used. Empty on password-protected posts (alias: %%excerpt%%)
%%post_content%% Post content / product description, limited to 50 words. Shortcodes and HTML are stripped. Since SEOPress 10.4, falls back to the Bricks content when the post content is empty
%%post_thumbnail_url%% Post thumbnail URL, featured image in full size
%%post_url%% Post URL, the permalink of the current post
%%post_date%% Post date, using your site date format (alias: %%date%%)
%%post_modified_date%% Post modified date, using your site date format
%%post_author%% Post author, display name
%%post_category%% Post category. Returns the primary category when one is set (since SEOPress 10.4), otherwise the first category attached to the post
%%post_tag%% Post tag. Returns the first tag attached to the post
%%_category_title%% Category title, on category archives
%%_category_description%% Category description, limited to 50 words
%%tag_title%% Tag title, on tag archives
%%tag_description%% Tag description, limited to 50 words
%%term_title%% Term title, on any taxonomy archive
%%term_description%% Term description, limited to 50 words
%%search_keywords%% Search keywords, wrapped in double quotes, on the search results page
%%current_pagination%% Current page number, displays nothing on page 1
%%page%% Page number with context and separator (i.e. “ – Page 2 of 4”), displays nothing on page 1
%%cpt_plural%% Plural post type archive name
%%archive_title%% Archive title, as WordPress names the current archive. Since SEOPress 10.4, printed as plain text, without the HTML tags WordPress adds around the name
%%archive_date%% Archive date. On a month archive: month number and year (e.g. 7 - 2026). Since SEOPress 10.4: the year alone on a year archive (e.g. 2026), and day, month and year on a day archive (e.g. 14 - 7 - 2026)
%%archive_date_day%% Day archive date
%%archive_date_month%% Month archive title, as a number
%%archive_date_month_name%% Month name archive title, translated into your site language
%%archive_date_year%% Year archive title
%%_cf_your_custom_field_name%% Custom fields from post, page, post type and term taxonomy, limited to 50 words (replace your_custom_field_name by the name of your custom field). Since SEOPress 10.4, some keys are refused, see “Which custom fields and user meta can be printed” below
%%_ct_your_custom_taxonomy_slug%% Custom term taxonomy from post, page and post type (replace your_custom_taxonomy_slug by the slug of your custom taxonomy, eg: product_cat). Returns the primary term of that taxonomy when one is set (since SEOPress 10.4), otherwise the first term attached. You can use several %%_ct_%% variables in the same template
%%wc_single_cat%% Single product categories, comma separated. Requires WooCommerce
%%wc_single_tag%% Single product tags, comma separated. Requires WooCommerce
%%wc_single_short_desc%% Single product short description, limited to 50 words. Requires WooCommerce
%%wc_single_price%% Single product price, taxes included. Requires WooCommerce (alias: %%wc_get_price%%)
%%wc_single_price_exc_tax%% Single product price, taxes excluded. Requires WooCommerce
%%wc_sku%% Single product SKU. Requires WooCommerce
%%currentday%% Current day of the month, without a leading zero
%%currentmonth%% Current month, full name translated into your site language
%%currentmonth_short%% Current month in 3 letters, eg: “Jan” for “January”
%%currentyear%% Current year, 4 digits
%%currentdate%% Current date, using your site date format
%%currenttime%% Current time, using your site time format
%%author_first_name%% Author first name
%%author_last_name%% Author last name
%%author_website%% Author website
%%author_nickname%% Author nickname
%%author_bio%% Author biography
%%_ucf_your_user_meta%% Author user meta (replace your_user_meta by your own). Always read from the author of the content, never from the visitor. Since SEOPress 10.4, some keys are refused, see “Which custom fields and user meta can be printed” below
%%currentmonth_num%% Current month in digital format, without a leading zero
%%target_keyword%% Target keyword, from the Content Analysis of the current post

In the fields of SEO > Titles & Metas, each variable is displayed as a label with its readable name (hover it to see the technical name, e.g. %%post_title%%). The buttons below the field insert the most common variables, and the arrow button (More variables) opens the full list with a search field.

Since SEOPress 10.4:

  • a space between two variables is displayed as its own small label (Space). You can see at a glance whether two variables are separated, and remove or move the space like a variable;
  • a variable saved under an alias, such as %%sitename%% or %%title%% (often after an import from another SEO plugin), is displayed with the readable name of the variable it stands for, and its value appears in the preview.

Don’t forget to click Save changes.

Learn more about using WooCommerce product attributes in your metadata here.

You can also create your own dynamic variables using this guide.

Which custom fields and user meta can be printed

Anyone allowed to edit an SEO title or meta description chooses the key written after %%_cf_ or %%_ucf_. To keep private data out of your pages, since SEOPress 10.4 these two variables print nothing (an empty value) for the following keys:

  • protected (hidden) meta: keys starting with an underscore, such as _edit_lock, or declared protected with the WordPress is_protected_meta filter. Exception for %%_cf_%% (posts and terms only): the WooCommerce and The Events Calendar fields their pages display anyway remain available: _sku, _price, _regular_price, _sale_price, _stock, _stock_status, _global_unique_id (GTIN), _wc_average_rating, _wc_review_count, _EventStartDate, _EventEndDate, _EventCost, _EventURL, _EventVenueID and _EventOrganizerID;
  • keys that name a credential or a role: any key containing token, secret, password, passwd, nonce, api_key, apikey, two_factor, 2fa, activation_key, capabilities or user_level (case insensitive);
  • for %%_ucf_%% only: any key containing billing_ or shipping_ (the addresses WooCommerce stores in customer accounts), or community-events-location.

Your own fields keep working as long as their key does not start with an underscore and does not contain one of these words. This is the case of fields created with Advanced Custom Fields: ACF stores the value under the field name (e.g. subtitle), so %%_cf_subtitle%% is not affected.

To print a key refused by default, use the seopress_meta_tag_key_is_allowed filter. It receives the decision, the meta key and the meta type (post, term or user). For example, to print the hidden custom field _my_subtitle with %%_cf__my_subtitle%%:

add_filter( 'seopress_meta_tag_key_is_allowed', function( $allowed, $key, $type ) {
	if ( 'post' === $type && '_my_subtitle' === $key ) {
		return true;
	}
	return $allowed;
}, 10, 3 );

You can also replace the default rules with your own list of allowed keys. Only list keys whose value can be published:

add_filter( 'seopress_meta_tag_key_is_allowed', function( $allowed, $key, $type ) {
	$allowed_keys = array( 'subtitle', 'city', '_price' );
	return in_array( $key, $allowed_keys, true );
}, 10, 3 );

Add this code to the functions.php file of your child theme or to a must-use plugin.

For developers

  • Since SEOPress 10.4, the filter of the value of a %%_ct_<taxonomy>%% variable is seopress_get_tag__ct_<taxonomy>_value, with two underscores, like the custom field and user meta variables (e.g. seopress_get_tag__ct_genre_value). The previous name, seopress_get_tag_ct_<taxonomy>_value, still runs but is deprecated.
  • To turn off the page builder fallback of %%post_excerpt%% and %%post_content%%, return false from the seopress_excerpt_builder_fallback filter. Another page builder can supply its text with the seopress_builder_content filter (it receives the text and the post ID).
add_filter( 'seopress_excerpt_builder_fallback', '__return_false' );

Manage all your Meta descriptions

This is the same process as for title tags.

You can use the same dynamic variables too.

Don’t forget to click Save changes.

Manage titles and meta descriptions individually

Edit a post, a page, or a custom post type.

In SEO metabox, in Titles settings tab, set your custom title and meta description.

Save the post.

Manage your shop title / meta description (WooCommerce)

Change your default separator

When using the %%sep%% dynamic variable, out of the box, we’ll use this one: -

To change this, go to your WP admin, SEO, Titles & Metas, Home tab, and enter your custom one to the Separator field.

Save changes and clear your cache.

Common errors

My title/description tag is empty!

You have entered a title tag and a meta description from the SEO metabox, but these are not displayed correctly in your source code. Make sure you have entered global title and meta description settings from SEO, Titles & Metas, Post Types, Taxonomies and Archives tabs. Save then clear the cache.

A custom field or user meta variable prints nothing

Since SEOPress 10.4, %%_cf_%% and %%_ucf_%% print nothing for hidden keys (starting with an underscore) and for keys that look like credentials. Check the key against the list of refused keys in “Which custom fields and user meta can be printed” above, and allow it with the seopress_meta_tag_key_is_allowed filter if its value can be published.

My title tag is not updating

You have entered your title tag globally and individually but another tag is displayed. Or, you have two title tags that appear in your source code. Make sure your theme uses the correct way to generate the <title> tag.

My meta tags are correct, but Google doesn’t display them!

Read our explanatory guide on the subject.