Schemify: Automatic structured data for WordPress

It’s been several months in the works, but I’m thrilled to announce that my latest WordPress plugin, Schemify, is now available on WordPress.org!

Schemify WordPress plugin logo

Clearly, design input is welcome!

Schemify is designed to automatically generate Schema.org-compliant structured data for WordPress, with full customization capabilities through actions and filters. With Schemify, you can rest assured that Google, Bing, and other search engines see your posts as articles, pages as webpages, and ensure that your authors get the credit they deserve.

Best of all? Schemify is able to inject structured data into your site without you having to change your markup!

What is structured data?

Structured Data is a standard way of presenting information for machine consumption. For a practical example, let’s look at an event: it likely has a few common properties, like a name, a date, a time, and a venue. Structured data lets us mark up the data in a way that’s clear to search engines and other technologies what values map to each property.

On your site, you might have a list of events, where each item looks something like this:

Company BBQ – July 1 @ noon

As human beings, we’re able to interpret that this is a company barbecue, happening on July 1 at noon. Machines, however, may have a harder time understanding this, so structured data exists so we can mark this up in a way that’s readable:

<div itemscope itemtype="http://schema.org/Event">
  <h2 itemprop="name">
    <a href="http://example.com/company-bbq" itemprop="url">Company BBQ</a>
  </h2>
  <span itemprop="startDate" content="2017-07-01T12:00:00">July 1 @ noon</span>
</div>

Writing this kind of markup by hand can be a real pain, and the number of optional fields that may or may not be included can cause templates to become a labyrinth of conditional statements.

How does Schemify work?

Schemify takes advantage of the newer JSON-LD (“Linked Data”) specification, which is supported by Schema.org and its partners. Rather than filling your markup with itemprop attributes and awkwardly-nested markup, Schemify builds a JSON object that represents your page:

{
    "@context": "http:\/\/schema.org",
    "@type": "BlogPosting",
    "description": "It's been several months in the works, but I'm thrilled to announce that my latest WordPress plugin, Schemify, is now available on WordPress.org!",
    "name": "Schemify: Automatic structured data for WordPress",
    "url": "https:\/\/stevegrunwell.com\/blog\/schemify",
    "author": {
        "@type": "Person",
        "image": "https:\/\/secure.gravatar.com\/avatar\/438597f60a01ae5dea92078ccb191691?s=600&amp;d=retro&amp;r=r",
        "name": "Steve",
        "sameAs": [
            "https:\/\/plus.google.com\/110542357331156424357",
            "https:\/\/twitter.com\/stevegrunwell"
        ],
        "url": "http:\/\/stevegrunwell.com",
        "familyName": "Grunwell",
        "givenName": "Steve"
    },
    "dateCreated": "2017-02-06T17:00:00+00:00",
    "dateModified": "2017-02-06T17:00:00+00:00",
    "datePublished": "2017-02-06T17:00:00+00:00",
    "headline": "Schemify: Automatic structured data for WordPress",
    "publisher": {
        "@type": "Organization",
        "description": "Blog and Portfolio of Columbus, OH-based Web Developer Steve Grunwell",
        "name": "Steve Grunwell",
        "url": "https:\/\/stevegrunwell.com"
    },
    "thumbnailUrl": "https:\/\/stevegrunwell.com\/wp-content\/uploads\/2017\/02\/schemify-icon.png"
}

Schemify is well-documented with a number of actions and filters, allowing developers to specify exactly what data gets put into each property for each schema.

The schemas themselves follow an object-oriented pattern, sub-classing Thing, the basic unit of all things Schema. This mirrors the construction of Schema.org itself, so it’s easy to match the specification schema for schema, property for property.

Getting started

Getting started is as easy as downloading the plugin from WordPress.org and activating it on your site. Anywhere it’s able to, Schemify will build a JSON-LD object representing the page and inject it into the page in a <script> tag, near the footer.

Schemify also has built-in compatibility/optimizations for Yoast SEO, the premiere search engine optimization plugin for WordPress; the extended user meta fields and default images flow seamlessly into the generated structured data.

Compatibility with other popular plugins (Co-Authors Plus, WooCommerce, and more) is planned, so if there’s something you’d like to see please add an issue on GitHub.

I’ve been working on Schemify off-and-on for the last several months, and I’m proud to finally be able to share it with the world. If you’re looking to give your site some structure (which increasingly is carrying SEO benefits), please install Schemify and tell me what you think!

Leave a Reply