=== Monprez Schema Identity ===
Contributors: monprez
Tags: schema, structured data, json-ld, credentials, eeat
Requires at least: 6.0
Tested up to: 7.1
Stable tag: 1.1.0
Requires PHP: 7.4
License: GPLv2 or later
License URI: https://www.gnu.org/licenses/gpl-2.0.html

Add structured data for people and organizations. Manage credentials, social links, and authorship with schema.org JSON-LD.

== Description ==

Monprez Schema Identity publishes professional credentials, expertise and business identity as schema.org structured data. Manage one person, one organisation, or both — including qualifications, accreditations, social profiles and the relationship between them.

Record issuers, certificate links and expiry dates. Expired credentials are excluded from newly generated markup, and dashboard notices help you keep the information current.

It works independently and alongside supported SEO plugins. Where supported, it extends existing Organisation markup and avoids adding a second Article when one is observed. No SEO plugin is required.

**Who it's for**

For professionals and small businesses that want to publish their qualifications and expertise in a form machines can read: consultants, accountants, architects, engineers, healthcare providers and agencies.

**What it does**

- **Personal qualifications:** publish credentials with a name, issuer, issue date, expiry date, badge image URL and certificate URL using `hasCredential`.
- **Organisation accreditations:** manage separate business credentials using `hasCertification`, with a certificate number where applicable.
- **Expiry handling:** exclude expired credentials when a page is generated and show dashboard notices for credentials that have expired or expire within 30 days. Cached pages may retain older markup until the cache clears.
- **Person and business profiles:** add names, descriptions, images or logos, social profiles and other identity links. Describe areas of expertise with `knowsAbout`.
- **Relationships:** publish a person and an organisation together, connected by the relationship you choose — works for, founded, or both.
- **Authorship:** when this plugin generates Article schema, posts written by your linked WordPress account reference your Person and its credentials. Other authors' posts are credited to their own names.
- **Article control:** choose Auto-detect, Always or Never. In Auto mode, the plugin defers when it observes an Article from a supported integration on that page.
- **Validation guidance:** the built-in "How to check" instructions provide your most recent post URL and a link to the schema.org validator.

The plugin outputs JSON-LD structured data. It does not add a visible author box or credential display to your theme.

**Works alongside your SEO plugin**

Automatic Organisation integration supports Yoast SEO, Rank Math, All in One SEO and The SEO Framework, subject to the versions and settings listed in the FAQ.

Where a supported Organisation is available, it adds properties using that organisation's identifier, leaving its name, URL and logo to your SEO plugin. Person profiles are published separately. SEOPress is also detected, but its integration has limits. See the compatibility FAQ for supported versions, exceptions and manual controls.

**Lightweight and focused**

- No external API calls or tracking
- No account or subscription required for the free plugin
- Vanilla JavaScript, with no jQuery dependency in the plugin's own scripts

**Monprez Schema Identity Pro — in development**

A Pro add-on is in development. Planned additions: multiple person profiles for agencies and teams, author bio boxes that are also schema markup, per-post author selection and Article schema control, CSV import and export for credentials, and additional organisation fields — legal name, founding date, and company identifiers. Details at https://monprez.se/en/wordpress-plugins/schema-identity/.

== Installation ==

1. Upload the `monprez-schema-identity` folder to the `/wp-content/plugins/` directory, or install via Plugins > Add New in your WordPress admin.
2. Activate the plugin through the Plugins menu in WordPress.
3. Go to Settings > Monprez Schema Identity to configure your identity data.

== Frequently Asked Questions ==

= Will this conflict with my SEO plugin? =

It is designed to minimise duplicate markup through the integrations below.

- **Organisation integration:** supported for Yoast SEO 11.0+, Rank Math 1.0.48+ with its Schema module enabled, All in One SEO 4.0+, and The SEO Framework 5.0+. The SEO plugin must be configured to publish an Organisation. Where its output can be observed, that Organisation must also be present on the page. Without a suitable target, this plugin publishes its own complete Organisation from your settings.
- **Article detection:** Auto mode can observe Articles from Yoast 11.0+, Rank Math, All in One SEO 4.1.3+, and The SEO Framework 5.0+. It defers only when an Article is observed. The SEO Framework's free tier does not generate Articles; Articles from its Premium extension can be observed.
- **SEOPress:** Organisation markup is published separately because the integration has no shared Organisation identifier to use. The free tier does not generate Articles. This plugin cannot observe SEOPress Pro's Article output; if both generate an Article, set Article Schema on Posts to Never.
- **Other plugins and older versions:** automatic integration may be unavailable. In Auto mode, this plugin generates its own Article when none is observed. The Advanced tab lets you disable its Article output or manually specify an Organisation `@id` where the other plugin provides one.

All in One SEO 4.0–4.1.2 supports Organisation integration based on its settings, but its output cannot be observed.

If multiple SEO plugins publish Organisations, this plugin integrates with one and leaves the others alone. Use the "How to check" instructions and the external schema validator to inspect your pages.

= Does it add my credentials to my SEO plugin's author schema? =

No. It publishes its own Person with your credentials. When this plugin generates an Article, it can link that Article directly to the Person, provided the post's author matches your linked WordPress account.

When a supported SEO plugin generates the Article and Auto mode defers to it, that plugin's author reference is left unchanged. Organisation integration does not mean Person profiles or Article authors are merged.

= What is hasCredential schema? =

`hasCredential` links a Person to qualifications, licences and other credentials. This plugin publishes each entry as an `EducationalOccupationalCredential`, including the issuer, dates, badge image and certificate link you provide.

= Why are organisation certifications output differently? =

Organisation accreditations, such as ISO certificates, use schema.org `Certification` under `hasCertification`. This supports an issuing body, certificate number and certification status. Personal qualifications use `hasCredential` instead.

= Does the plugin verify credentials or guarantee search results? =

No. It publishes what you enter without verifying qualifications. Enter only accurate information that can be checked against your site.

Structured data helps describe your identity in a standard format. It does not guarantee higher rankings, rich results or mentions in AI answers. Search engines and other systems decide how to use it.

= Do my credentials need to appear on the site itself? =

Yes — keep the claims consistent with information visitors can read on your site. The free plugin adds JSON-LD only, so writing the visible information is up to you.

[Google's structured data guidance](https://developers.google.com/search/docs/appearance/structured-data/sd-policies) is page-specific: markup should describe content visible on the page carrying it. This plugin publishes site-level identity nodes across the site, excluding search results and 404 pages. Credentials may therefore appear in markup on pages where they are not visibly listed. A separate about or credentials page does not resolve that page-specific limitation, and the plugin does not promise rich-result eligibility.

= Do expired credentials still appear in the schema output? =

No. Credentials with past expiry dates are excluded when a page is generated. A page cache or CDN may continue serving earlier markup until it clears. Expired entries stay in your settings so you can update them when renewed. Entries with unusable dates are also excluded and marked "Not published".

= Where is my data stored, and is it public? =

Settings are stored in your WordPress database. The plugin does not send them to Monprez or another external service and includes no tracking.

Identity and credential information included in the JSON-LD is public and can be read from your pages. Only enter information you intend to publish and have permission to use.

= What is the @id used for? =

An `@id` identifies an entity in structured data so other entries can reference it. The plugin's standalone Person and Organisation use `your-site.com/#/schema/person` and `your-site.com/#/schema/organization`. With a supported Organisation integration, it uses the SEO plugin's identifier instead; you can also specify one manually in Advanced settings.

== Screenshots ==

1. Identity — Person and Organisation details, linked WordPress account, profile URLs and expertise.
2. Credentials — personal qualifications and organisation accreditations, with expiry notices.
3. Advanced — Article controls, detected SEO plugins and Organisation integration.
4. JSON-LD output — Person and Organisation data, credentials and relationships in your page source.

== Changelog ==

= 1.1.0 =
* Initial release on WordPress.org.
