Structured Markup Integration with Yoast

What’s new

  • Previously multiple structured markup was independently generated by Yoast, plugins, WordPress core and custom code.
  • Yoast has exposed their structured markup to developers via an API.
  • This is to allow developers to combine and customise information from multiple sources before generating structured markup and to avoid the often conflicted information provided by multiple sources within WordPress.

In order to enhance the schema knowledge graph, we utilise dynamic custom data from WordPress pages. To achieve this, we use a custom PHP script within the child theme that formats the schema and inserts it into the default schema generated by Yoast.

This technique allows us to add service and coverage areas based on country codes/geofences, while also linking Solutions -> Services -> Products, etc. within the schema. Additionally, we can add links to documents, brochures, and information on how it works, which is included in the metadata.

This method also provides the flexibility to add extra schema fields that may increase the likelihood of being featured in rich search results.

Understanding the role of structured markup​

Structured markup is a way of organising information on web pages. It provides additional information about the properties of things on web pages and their relationships, which may not be immediately clear or easy to understand from just reading the page.
We are specifically interested in how search engines understand the relationship between a website’s pages, the organisation that runs the website, and the products they offer. Structured markup allows us to describe how these entities are connected and define their properties.
By using structured markup, search engines may provide more detailed results, such as ‘rich listings’ and ‘knowledge graph panels’. Additionally, structured markup can help future systems and software better understand the relationship between entities, allowing them to deliver new types of services.
Platforms like Google, Bing, and Facebook are constantly adding support for new features and formats that rely on structured markup.

Why did Yoast develop a new standard/approach?​

Structured markup is already provided by many content management systems, platforms, themes, and plugins. However, these implementations are often incomplete, inconsistent, conflicting, or incorrect. While there is extensive documentation on the possible structures and properties of entities and their markup from and others, there is limited and inconsistent advice and documentation on the implementation of schema markup, particularly for complex, structured data.

The available documentation effectively describes how to represent individual things, but provides little direction on how to create and maintain a graph of entities and their relationships. With the continued growth of structured markup capabilities, the lack of standardised approaches to implementation means that most websites are increasingly likely to make mistakes. In the worst cases, this can lead to Google ignoring or blacklisting those sites for eligibility in rich listings.

The challenges of integration and linking​

When it comes to systems that depend on multiple moving parts, such as a WordPress website with various plugins and third-party themes, interoperability becomes a challenge. Without a shared way of working, developers struggle to link data consistently, cross-reference entities, or share code with ease.

For instance, one plugin may add product schema while another may introduce local business schema. Unfortunately, these blobs of markup cannot reliably communicate or integrate their data. There is no universal or straightforward way for these plugins to declare their schema, or to specify that a product is explicitly sold by a particular local business or is manufactured by the same organisation operating the website.

In most cases, current implementations can only declare the existence of each individual piece but have no way of declaring their relationships. They lack a shared mechanism to connect their entities. As a result, this fragmentation leads to markup errors and limits the scalability of a website’s structured data. Achieving the ‘linked’ part of JSON-LD is hard without standardisation!