Description
STS SEO adds the search and sharing details WordPress does not provide on its own, and leaves everything else to WordPress.
What it adds
- An optional SEO title for each post and page. WordPress still prints the one
<title>element; STS SEO only supplies its text. - An optional search description. When it is empty, the manual excerpt or a short summary of the content is used.
- Open Graph and Twitter Card tags, with one social image chosen from the post’s own selection, its featured image or a site-wide default.
- A canonical link for the posts page (WordPress already handles single posts and pages).
- One optional Organization, LocalBusiness or Restaurant entity in JSON-LD, built only from what you enter in Settings STS SEO.
What it leaves to WordPress
The title element, robots directives, canonical links on single content, XML sitemaps, feeds and search-engine visibility. STS SEO never changes the “Discourage search engines” setting.
Works alongside other plugins
- When a full SEO plugin is active (Yoast SEO, Rank Math, All in One SEO, SEOPress, The SEO Framework or Slim SEO), STS SEO turns all of its front-end output off. Your STS SEO fields are kept.
- With Jetpack, ownership is decided feature by feature. STS SEO provides the social tags on posts, pages and the posts page and turns Jetpack’s Open Graph tags off there, using Jetpack’s own filter. With Jetpack’s SEO Tools module active, titles and descriptions are left to Jetpack.
Privacy
STS SEO makes no external requests, loads nothing from other servers, sets no cookies and collects no data. It adds no JavaScript or CSS to the public site. Its fields are not exposed through the public REST API.
Developer hooks
All filters are optional.
sts_seo_enabled(bool) – return false to turn off all front-end output.sts_seo_conflicts(string[]) – names of active full SEO plugins; any name turns all output off.sts_seo_feature_owner(string $owner, string $feature) – return a plugin name to leave one feature (title,description,social,posts_canonical,schema) to that plugin.sts_seo_jetpack_social(bool) – return false to keep Jetpack’s social tags.sts_seo_title(string $title, int $post_id) – the title override for a public post or page.sts_seo_description(string $description, int $post_id) – the description for a public post or page.sts_seo_social_image_id(int $attachment_id, int $post_id) – the chosen social image; invalid IDs give no image.sts_seo_posts_canonical_enabled(bool) – return false to skip the posts-page canonical link.sts_seo_schema_enabled(bool) – return false to skip the JSON-LD entity.sts_seo_schema_entity(array $data, array $settings) – the complete entity; return a non-array to skip it.
Values returned by the title and description filters are normalized to plain text again before output.
Installation
- In WordPress, go to Plugins Add New Plugin and search for “STS SEO”.
- Click Install Now, then Activate.
- Optionally, set a default social image and business details in Settings STS SEO.
- Edit any post or page to set its SEO title, description and social image in the STS SEO box.
To install manually, upload the sts-seo folder to /wp-content/plugins/ (or use Plugins Add New Plugin Upload Plugin with the ZIP file) and activate it. Updates are offered in Dashboard Updates like any other plugin.
FAQ
-
Will STS SEO conflict with Yoast SEO, Rank Math or another SEO plugin?
-
No. When a full SEO plugin is active, STS SEO turns all of its front-end output off and keeps your STS SEO fields, so the two never print duplicate tags. Settings STS SEO explains which plugin is in charge.
-
Does it create XML sitemaps or control indexing (noindex)?
-
No, on purpose. WordPress already provides XML sitemaps, robots directives and the “Discourage search engines” setting, and STS SEO leaves them to WordPress.
-
Does it contact external servers or slow down my site?
-
No. STS SEO makes no external requests, stores nothing outside your database, and adds no JavaScript or CSS to the public site.
-
Which content does it work on?
-
Posts and pages, plus the page assigned as your posts page. To set the homepage’s title and description, edit the page assigned as your homepage in Settings Reading.
-
A developer can leave any single STS SEO feature to the theme with the
sts_seo_feature_ownerfilter (see Developer hooks below), so tags are never duplicated. -
Does STS SEO change my page titles automatically?
-
No. A title is replaced only on posts and pages where you enter an SEO title. Everything else keeps the title WordPress produces.
-
What happens if I deactivate or delete the plugin?
-
Your titles, descriptions, images and settings stay in the database. Deleting the plugin does not remove them, so reinstalling restores everything.
-
Yes. Add this to a small plugin or your theme’s functions.php:
add_filter( 'sts_seo_jetpack_social', '__return_false' ); -
Why are characters like “<” and “[ ]” kept in my descriptions?
-
Since 0.3.0, only real HTML markup is removed. Text such as “Ages 5<10” or “Grades K-12 [ages 5–18]” is kept exactly as written and is safely escaped when printed.
-
Does it work with classic themes?
-
Yes, for descriptions, social tags and structured data. Title overrides need a theme that lets WordPress manage the title (
add_theme_support( 'title-tag' )), as all block themes and most current classic themes do.
Reviews
There are no reviews for this plugin.
Contributors & Developers
“STS SEO” is open source software. The following people have contributed to this plugin.
ContributorsTranslate “STS SEO” into your language.
Interested in development?
Browse the code, check out the SVN repository, or subscribe to the development log by RSS.
Changelog
0.4.0
- Prepared for the WordPress.org plugin directory: updates are now offered through WordPress.org like any directory plugin.
- Translations are loaded by WordPress from language packs; no change to any text.
- Admin notices appear on Settings STS SEO only, never on every post and page editor.
- Business structured data is printed with WordPress’s script-tag function, so its attributes can be filtered (for example to add a Content Security Policy nonce). The data itself is unchanged.
- No changes to stored data. See CHANGELOG.md for details.
0.3.1
- A social image chosen while a post is still a draft is now kept and used once the post is published. It was previously dropped on save and had to be chosen again after publishing. The same applied to the site-wide default social image.
- An image belonging to a draft, private or password-protected post is still never output.
- No changes to stored data. See CHANGELOG.md for details.
0.3.0
- Text is no longer lost when titles and descriptions contain “<“, brackets or “%” sequences.
- Jetpack is handled per feature instead of turning STS SEO off.
- Update URI header and a local safeguard against foreign update offers.
- Accessibility: character counts are announced after a pause instead of on every keystroke, settings help text is announced with its field, the “Remove image” link meets contrast guidelines, and “Settings saved” appears once.
- The “Search engine visibility is disabled” notice appears on Settings STS SEO only.
- Translation template, a clean release package, and automated tests on PHP 7.4–8.4 and WordPress 6.6–7.1, including multisite.
- No changes to stored data. See CHANGELOG.md for details.
0.2.2
- Fixed a duplicate id that left the SEO Title field without an accessible name.
