-
Notifications
You must be signed in to change notification settings - Fork 170
Plugin Directory: Add FAQPage schema markup for plugin pages #508
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: trunk
Are you sure you want to change the base?
Plugin Directory: Add FAQPage schema markup for plugin pages #508
Conversation
|
||
$document_internal_errors = libxml_use_internal_errors( true ); | ||
|
||
$document = new \DOMDocument(); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I'm not a fan of using DomDocument like this on every page load.
We should either: Store the FAQs as post_meta, or use WP_HTML_Tag_Processor
if absolutely required to extract from the HTML.
We can run a migration process to backfill the postmeta, so no need for doing both.
We could also migrate the existing FAQ markup to a block that pulls from that metadata..
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@dd32 I agree with your suggestion, the postmeta approach seems the cleanest long-term solution.
For new uploads, we can parse the readme during the upload process (e.g. in class-upload-handler.php
) and store _plugin_faqs postmeta immediately.
For existing plugins, have we handled this kind of migration process in the past?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
We've done migrations for data regularly enough. It's a PITA but it's easier than building legacy code upon legacy code upon legacy code.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@dd32 How were these migrations typically handled in the past? Is there any sample code or a PR I can look at as a reference to follow the same approach for FAQ?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@nikunj8866 Generally either manually run or a bin script, I don't really have any good references for you.
One option in this case would be Just run the plugin import process for each plugin with FAQ items
What I'd suggest is ignoring back-compat and just work with:
- Store FAQ items as meta values
- Add a block, or shortcode, in place of the FAQ HTML markup in the post_content when it's built
- Leave older imported plugins without FAQPage schema items to start with, with the assumption that either a) a re-import will update it or b) a migration will be run.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@dd32 Thanks for the guidance.
As I understand it:
- I'll add code to store FAQ content in post meta when plugins are uploaded.
- I'll create a block for FAQs. Just to confirm, should this block output both the FAQ HTML Markup and the FAQ schema, or do you prefer to keep schema generation separate?
- For older plugins, we could hook into
import_from_svn
so that FAQs are stored into post meta whenever a plugin is updated.
Does that align with what you had in mind?
Meta Trac: https://meta.trac.wordpress.org/ticket/4695
This PR enhances the existing JSON-LD schema output on plugin detail pages to include a FAQPage node when such FAQ content is available.
Schema Verification link: https://search.google.com/test/rich-results/result?id=NcC3jhx4MFOkZgdLgnMlOg
Screenshots
Schema Output