Description
We are creating a plugin that adds all the HTML tags inside <head> to the REST API, very useful specially for SEO tags.
It will be both a separate plugin and part of the main Frontity plugin.
The @frontity/head-tags package will integrate any Frontity project with this plugin without any extra configuration or development.
How this plugin works
The plugin adds a head_tags field to each entity fetched from the WordPress REST API. This field would be an array of objects representing the tags that WordPress would include normally inside the html <head> element.
Note: by default, stylesheets, style tags and JavaScript code would be removed.
The entities in which this field would be included are the following:
- Posts, pages, attachments and custom post types
- Post types: for archive pages
- Categories, tags and custom taxonomies
- Authors
The objects inside head_tags field would have three properties:
-
tag: the tag name (e.g."title","meta","link") -
attributes: an object with the attributes
(eg.{ "rel": "canonical", "href: "http://..." }) -
content: the text inside the element
(e.g. inside<title>could be"Hello world! - My Site")
Here is an example of what could be the content of the head_tags field:
"head_tags": [
{
"tag": "title",
"content": "Hello world! - My Site"
},
{
"tag": "meta",
"attributes": {
"name": "robots",
"content": "max-snippet:-1, max-image-preview:large, max-video-preview:-1"
}
},
{
"tag": "link",
"attributes": {
"rel": "canonical",
"href": "http://mysite.com/hello-world/"
}
}
]
This head_tags object is cached using transients so there would be a button on the plugin’s GUI to clear that cache. Also, for specific entities (posts, pages, custom post types, authors and taxonomies) this would be done automatically.
It will have a setting to activate or deactivate it. If it is activated, the head_tags field will be shown. If it is deactivated, the head_tags field can be shown using the query.
This behavior could be overriden using a head_tags param in the query:
-
?head_tags=true/false: this query should override the setting.
In the future, @frontity/head-tags could add params: { headTags: true } to the settings of @frontity/wp-source to make sure it always gets the head tags.
Details
Name of the solo plugin: REST API - Head Tags by Frontity.
Name in the Frontity plugin: Head Tags.
Class name: Frontity_Headtags_Plugin.
Activation function: Frontity_Headtags_Plugin->activate.
Deactivation function: Frontity_Headtags_Plugin->deactivate.
Uninstall function: Frontity_Headtags_Plugin->uninstall.
Settings name in MySQL: frontity_headtags_settings.
Settings name in JavaScript: window.frontity.settings.headtags => state.headtags.
Settings:
-
active: boolean (default: true)
Activation:
- create
frontity_headtags_settingssettings if they don’t exist.
Deactivation:
- nothing
Uninstall:
- delete
frontity_headtagssettings. - delete all saved transients
Note: by default, stylesheets, style tags and JavaScript code would be removed.