DiscussionForumPosting structured data: three issues fail Google Search Console validation

Rasmus Vind

Well-known member
Licensed customer
Affected version
2.3.7
Files: XF\ThreadType\AbstractHandler, message_macros

Issue 1 — itemprop="text" empty for image/smilie/embed-only posts​


GSC: "Either text, image, or video must be specified."

Posts whose body is only smilies, only an attachment image, or only an embed render with an empty <div itemprop="text"> and no itemprop="image" on the inline images. Live example: post #10 of https://www.hiveworkshop.com/threads/darkhan-drathir.356815/ (three
:100: smilies, no text node).

Fix: When the rendered message has no plain-text content, emit a <meta itemprop="image" content="..."> (first attachment) or <meta itemprop="text" content=":100: :100: :100:"> (smilie alt-text fallback) inside the existing wrapper.

Issue 2 — JSON-LD on page 2+ omits text/image/dateModified


GSC: "Either text, image, or video must be specified."

In AbstractHandler::getLdStructuredData() the assignment of text/image/dateModified is gated behind if ($page === 1), so every paginated URL after page 1 emits an incomplete entity. GSC validates each URL independently. Compare
https://www.hiveworkshop.com/threads/mortar-team-and-derivatives.295866/ vs. https://www.hiveworkshop.com/threads/mortar-team-and-derivatives.295866/page-2.

Fix: Drop the $page === 1 gate around text/image/dateModified (the LikeAction counter can stay page-1 only). These fields describe the first post and are page-invariant.

Issue 3 — parentItem declares an empty implicit item​


GSC: "Missing field 'author'."

Each comment emits <meta itemprop="parentItem" itemscope itemid="<thread-URL>">. Per the HTML microdata spec, itemscope declares a new item — empty, no itemtype, no properties. Google infers this is the parent DiscussionForumPosting and reports it as
missing author, even though both the page-level JSON-LD and every visible Comment have valid authors. Live example: https://www.hiveworkshop.com/threads/mortar-team-and-derivatives.295866/page-2.

Fix: Replace <meta itemprop="parentItem" itemscope itemid="..."> with <link itemprop="parentItem" href="..."> — references the parent by URL without creating a new item.

Impact​


On any active forum, most thread URLs trip at least one issue: Issue 2 affects every multi-page thread; Issue 3 affects every thread page; Issue 1 affects all image/smilie-only replies. Combined, this disqualifies a large share of thread pages from rich results.
 
Back
Top Bottom