山梨県でホームページの制作をしています。コンテンツを重要視した使いやすいWebサイトを提供します。
2023-07-05

FAQを構造化し検索結果に表示させる方法

最近、ネット検索の検索結果に「よくある質問」が表示させたいという要望が多いのでFAQを構造化し検索結果に表示させる方法を簡単にまとめておく備忘録です。

あ、Wordpressの場合です。

ちょっとはユーザビリティが向上したり、サイトへのアクセスも増えるんじゃないかという期待できるということなので書いとく。

FAQをカスタム投降にした場合。
カスタム投降のスラッグは『faq』とします。

archive.phpの場合

<script type="application/ld+json"> 
	{		
		"@context": "https://schema.org",
		"@type": "FAQPage",
		"mainEntity": [
		<?php
		$loop = 0 ;
		if ( have_posts() ) : while ( have_posts() ) : the_post();
		if( ($loop < 10) && ($loop != 0) ):
		echo ',';
		?>
		<?php endif; ?>
		{
			"@type": "Question",
			"name": "<?php the_title(); ?>",
			"acceptedAnswer": {
				"@type": "Answer",
				"text": "<?php echo strip_tags($post->post_content); ?>"
			}
		}
		<?php
		$loop++;
		?>
		<?php endwhile ; endif ; ?>
		]
	}
</script> 

txonomy.phpのときもこれでいけます。
表示できるのは10件までぽいのでloopという変数を使って10回限定でループをまわしています。

トップページの場合

<script type="application/ld+json"> 
	{		
		"@context": "https://schema.org",
		"@type": "FAQPage",
		"mainEntity": [
		<?php
		$args = Array(
        'post_type' => 'faq',
        'posts_per_page' => 4,
		);
		$wp_query = new WP_Query( $args );

		if ( $wp_query->have_posts() ) {
    		while ( $wp_query->have_posts() ) {
        		$wp_query->the_post();
				echo ',';
		?>
		{
			"@type": "Question",
			"name": "<?php the_title(); ?>",
			"acceptedAnswer": {
				"@type": "Answer",
				"text": "<?php echo strip_tags($post->post_content); ?>"
			}
		}
		<?php
			}
		}
		wp_reset_postdata();
		?>
		]
	}
</script> 
関連記事