Yoast SEO 14.0: changing the Yoast Schema API

Due to the Yoast SEO indexable project using an entirely new namespaced Dependency Injection architecture, we've had to change some of our Schema API. All your existing integrations still work as we've made them backwards compatible, but we ask that you please update to the new code when you can. In this post I will explain the changes we made.

Overall, there are four important changes. All your old code still works, as we've added full backwards compatibility. However, that code will start throwing deprecation notices. The good news is, these changes are fairly simple and will make life easier in the long run.

WPSEO_Graph_Piece becomes Abstract_Schema_Piece

If you were implementing your own graph pieces and adding them with the , you probably had something like this:

class YoastCon implements \WPSEO_Graph_Piece {

You should replace it with:

use \Yoast\WP\SEO\Generators\Schema\Abstract_Schema_Piece;

class YoastCon extends Abstract_Schema_Piece {

This Abstract_Schema_Piece is an abstract, and not an interface, because it has two public properties: $context and $helpers. These are filled magically and can be used to obtain important data.

WPSEO_Schema_IDs becomes Schema_IDs

The Schema ID helper class has moved, it's now called Schema_IDs, full namespace Yoast\WP\SEO\Config\Schema_IDs. This is simply a case of importing that class and then search & replacing all your code, so for instance  WPSEO_Schema_IDs::PERSON_LOGO_HASH  becomes Schema_IDs::PERSON_LOGO_HASH.

Schema image changes

Instead of doing this:

$image_schema_id = $context->canonical . '#product_image';
$image_helper    = new \WPSEO_Schema_Image( $image_schema_id );
$schema_image    = $image_helper->generate_from_attachment_id( $attachment_id );

You can now simply do this:

$image_schema_id = $this->context->canonical . '#product_image';
$image_helper    = $this->helpers->schema->image->generate_from_attachment_id( $image_schema_id, $attachment_id );

The context, that is now of class Meta_Tags_Context is automatically exposed under $this->context. All the helpers you could need are under $this->helpers. As you can see, generating an image can be done using the  Yoast\WP\SEO\Helpers\Schema\Image_Helper  class, which is automatically available under  $this->helpers->schema->image. You'll find that if you use a modern IDE like PHPStorm or Visual Studio Code, all of these auto expand for lots of coding convenience.

Note that the Schema ID for the image has become a parameter on the function call instead of on the class constructor.

Classes have moved

We've moved classes, according to the table below, and the signature of some of the functions within them have slightly changed, nine times out of ten to get a Meta_Tags_Context parameter.

If you were, for instance, extending WPSEO_Person, that is now called Yoast\WP\SEO\Generators\Schema\Person. Extending Person is as simple as this:

use Yoast\WP\SEO\Generators\Schema\Person;

/**
 * Class Team_Member
 */
class Team_Member extends Person {

The old versus new class names:

Old class nameNew class name
WPSEO_Graph_PieceNow an abstract class instead of an interfaceAbstract_Schema_Piece
WPSEO_Schema_ArticleArticle
WPSEO_Schema_AuthorAuthor
WPSEO_Schema_BreadcrumbBreadcrumb
WPSEO_Schema_ContextMeta_Tags_Context automatically available under $this->context when you extend Abstract_Schema_Piece
WPSEO_Schema_FAQFAQ
WPSEO_Schema_FAQ_Question_ListRolled up into FAQ
WPSEO_Schema_FAQ_QuestionsRolled up into FAQ
WPSEO_Schema_HowToHowTo
WPSEO_Schema_IDsSchema_IDs
WPSEO_Schema_ImagePlease use $this->helpers->schema->image
WPSEO_Schema_MainImageMain_Image
WPSEO_Schema_OrganizationOrganization
WPSEO_Schema_PersonPerson
WPSEO_Schema_WebPageWebPage
WPSEO_Schema_WebsiteWebSite

1 Response to Yoast SEO 14.0: changing the Yoast Schema API

  1. Janz Nordman
    Janz Nordman  • 7 months ago

    You are doing great work. Any plans to support CreativeWork schema? As far as I see there's currently structured data for pages and CreativeWork can be one of the nominant. Best regards