Developer API
Hooks & Filters: extend SEO-WP without forking it.
The public developer contract for final metadata, social tags, Schema, hreflang and sitemap behavior.
| Filter | Purpose | Arguments |
|---|---|---|
seo_wp/title | Final resolved SEO title | $title, get_queried_object() |
seo_wp/meta_description | Final meta description | $description, get_queried_object() |
seo_wp/canonical | Final canonical URL | $url, $context |
seo_wp/opengraph/tags | Open Graph tag array | $tags, get_queried_object() |
seo_wp/schema/graph | JSON-LD graph nodes | $nodes, get_queried_object() |
seo_wp/hreflang/alternates | Alternate-language URL pairs | $alternates, $context |
seo_wp/hreflang/managed_externally | External hreflang management flag | false, $context |
seo_wp/sitemap/excluded_post_ids | Exclude post IDs from sitemaps | array() |
Example: change the final title.
Use WordPress filters when a rule belongs in code rather than in an editor field.
add_filter( 'seo_wp/title', function ( $title, $object ) {
if ( is_singular( 'product' ) ) {
return $title . ' | Free shipping';
}
return $title;
}, 10, 2 );Slim Hreflang contract
One renderer, external alternate data.
Slim Hreflang can supply seo_wp/hreflang/alternates and mark hreflang as externally managed. SEO-WP remains the sole renderer when both plugins are active, preventing duplicate output.

