在《在 WordPress 6.9 中设置手风琴样式》中,我介绍了如何使用 WordPress 6.9 的 Accordion(手风琴)区块为常见问题页面设置样式。那篇教程收到的一项需求,是为输出的 HTML 定义 Schema.org 微数据,让搜索引擎能够理解并索引常见问题内容。借助 WordPress 的 WP_HTML_Tag_Processor 类,完全可以做到这一点。
要使用这种方法,请在编辑器中添加一个 Accordion 区块,然后在区块检查器面板的高级 → 附加 CSS 类字段中,为它添加 is-faqs 类。接着,将以下代码添加到主题的 functions.php 文件或自定义插件中:
add_filter( 'render_block_core/accordion', 'projectslug_render_accordion_faqs' );
function projectslug_render_accordion_faqs( $content ): string
{
$processor = new WP_HTML_Tag_Processor( $content );
// Bail early if there's no Accordion block with the `.is-faqs` class.
if (
! $processor->next_tag( [ 'class_name' => 'wp-block-accordion' ] )
|| ! $processor->has_class( 'is-faqs' )
) {
return $processor->get_updated_html();
}
// Add attributes to wrapping accordion block.
$processor->set_attribute( 'itemscope', true );
$processor->set_attribute( 'itemtype', 'https://schema.org/FAQPage' );
// Loop through accordion items and add attributes.
while ( $processor->next_tag( [ 'class_name' => 'wp-block-accordion-item' ] ) ) {
$processor->set_attribute( 'itemscope', true );
$processor->set_attribute( 'itemprop', 'mainEntity' );
$processor->set_attribute( 'itemtype', 'https://schema.org/Question' );
// Add attributes to the title element.
if ( $processor->next_tag( [ 'class_name' => 'wp-block-accordion-heading__toggle-title' ] ) ) {
$processor->set_attribute( 'itemprop', 'name' );
}
// Add attributes to the panel.
if ( $processor->next_tag( [ 'class_name' => 'wp-block-accordion-panel' ] ) ) {
$processor->set_attribute( 'itemscope', true );
$processor->set_attribute( 'itemprop', 'acceptedAnswer' );
$processor->set_attribute( 'itemtype', 'https://schema.org/Answer' );
// Add attribute to first paragraph.
if ( $processor->next_tag( 'p' ) ) {
$processor->set_attribute( 'itemprop', 'text' );
}
}
}
return $processor->get_updated_html();
}
感谢 @bph 和 @juanmaguitar 对这段代码提供反馈并进行审阅。
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END











暂无评论内容