GoogleのAMP(Accelerated Mobile Pages)へ対応するためにはAMP HTMLとschema.org/Article(またはNewsArticle)、もしくはschema.org/BlogPosting の構造化データが必要です。
AMP HTMLへの対応はWordPress プラグインでどうにかと思っているのですが、そちらはもう少しエラーの改善まで時間が必要な感じです。
プラグインでも構造化データの対応はされるかもしれませんが、構造化データについてはプラグインを使わない記述方法を用意してみました。宜しければご参考ください。
サイトによってはデータを追加したいプロパティもあるかもしれませんが、基本的な必須内容となります。
一部自前の関数を使っていることもあり、nameやheadline(見出し)などは必要に応じて任意の関数などに変更してください。
また、分岐で投稿ページのみで記載されるようになっていますので、必要でしたら分岐を変更してください。
Articleの場合
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 | //NewsArticleの場合 <?php if (is_front_page()) { ?> <?php } elseif(is_single() || is_page()) { ?> <script type="application/ld+json"> { "@context": "https://schema.org", "@type": "Article", "publisher": { "@type": "Organization", "name": "<?php bloginfo('name'); ?>", "logo": { "@type": "ImageObject", "url": "<?php bloginfo('template_url'); ?>/lib/img/common/shcema_logo600x60.png", "width": 600, "height": 60 } }, "author": "<?php $author = get_userdata($post->post_author); echo $author->display_name; ?>", "datePublished": "<?php the_time('Y/m/d g:i:s'); ?>", "dateModified": "<?php the_modified_time('Y/m/d g:i:s'); ?>", "name": "<?php bloginfo('name'); ?>", "headline": "<?php 任意の関数とか(); ?>", <?php $str = $post->post_content; $searchPattern = '/<img.*?src=(["\'])(.+?)\1.*?>/i'; if (has_post_thumbnail() && !is_archive()){ $image_id = get_post_thumbnail_id(); $image = wp_get_attachment_image_src( $image_id, 'full'); echo '"image": "'.$image[0].'",';echo "\n"; } else if ( preg_match( $searchPattern, $str, $imgurl ) && !is_archive()) { echo '"image": "'.$imgurl[2].'",';echo "\n"; } else { echo '"image": "https://◯◯◯◯.jp/lib/img/common/ogimg.png",';echo "\n"; } ?> "mainEntityOfPage": "<?php the_permalink(); ?>" } </script> <?php } else { ?> <?php } ?> |
BlogPostingの場合
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 | //BlogPostingの場合 <?php if (is_front_page() || is_page()) { ?> <?php } elseif(is_single()) { ?> <script type="application/ld+json"> { "@context": "https://schema.org", "@type": "BlogPosting", "publisher": { "@type": "Organization", "name": "<?php bloginfo('name'); ?>", "logo": { "@type": "ImageObject", "url": "<?php bloginfo('template_url'); ?>/lib/img/common/shcema_logo600x60.png", "width": 600, "height": 60 } }, "author": "<?php $author = get_userdata($post->post_author); echo $author->display_name; ?>", <?php if ( is_single() ) { ?> <?php if ($post->post_excerpt){ ?> "description": "<?php echo $post->post_excerpt; ?>", <?php } else {$summary = strip_tags($post->post_content); $summary = str_replace("\n","", $summary); $summary = str_replace("\r","", $summary); $summary = mb_substr($summary, 0, 80). "..."; ?> "description": "<?php echo $summary; ?>", <?php } ?> <?php } else { ?> "description": "<?php bloginfo('description'); ?>", <?php } ?> "name": "<?php bloginfo('name'); ?>", "headline": "<?php 任意の関数とか(); ?>", "datePublished": "<?php the_time('Y/m/d g:i:s'); ?>", "dateModified": "<?php the_modified_time('Y/m/d g:i:s'); ?>", <?php if ( is_single() ) { ?> <?php if ($post->post_excerpt){ ?> "articleBody": "<?php echo $post->post_excerpt; ?>", <?php } else {$summary = strip_tags($post->post_content); $summary = str_replace("\n","", $summary); $summary = str_replace("\r","", $summary); $summary = mb_substr($summary, 0, 80). "..."; ?> "articleBody": "<?php echo $summary; ?>", <?php } ?> <?php } else { ?> "articleBody": "<?php bloginfo('description'); ?>", <?php } ?> <?php $str = $post->post_content; $searchPattern = '/<img.*?src=(["\'])(.+?)\1.*?>/i'; if (has_post_thumbnail() && !is_archive()){ $image_id = get_post_thumbnail_id(); $image = wp_get_attachment_image_src( $image_id, 'full'); echo '"image": "'.$image[0].'",';echo "\n"; } else if ( preg_match( $searchPattern, $str, $imgurl ) && !is_archive()) { echo '"image": "'.$imgurl[2].'",';echo "\n"; } else { echo '"image": "https://◯◯◯◯.jp/lib/img/common/ogimg.png",';echo "\n"; } ?> "mainEntityOfPage": "<?php the_permalink(); ?>" } </script> <?php } else { ?> <?php } ?> |