WordPress | Twenty Fourteenの構造化データをスキーマに変えるメモ

相変わらず色々やって深い悩みに落ちる日々が続いています。勉強すれば粗が分かっての堂々巡りで、何と言うか不毛です。
で、今回は気に入らなかった構造化データを修正というか、変更してみます。

広告

googleが推奨してるschemaに書き換える

以前、Twenty Fourteenの構造化データのエラーをとりましたが、実は気に入らなかったトコロがあってモヤモヤしていました。
そこで、同じエラーをblancでも吐いていたので合わせて修正する事にしてみました。
wordpressではどうやらmicroformatsというので構造化する感じのようなのですが、どうせ色々設定し直すのならと思って、googleが推奨してるschemaに書き換える事にしてみました。

microformatsを消す

まずはfunctions.phpでhentryというクラスを消す。

function remove_hentry( $classes ) {
    $classes = array_diff($classes, array('hentry'));
    return $classes;
}
add_filter('post_class', 'remove_hentry');

hentryを消すと、Twenty Fourteenではスタイルが崩れます。なので、cssの.hentryをずべて.postに書き換えました。

hfeedとauthor vcardも消す

header.phpの下のほうにhfeedというクラスがあるので、それも消す。
後は著者のauthor vcardのvcardも消す。
コレでmicroformatsのエラーは消えると思います。

schemaでマークアップする

せっかくあった構造化データを消したままにするのも何だか微妙ですから、スキーマでマークアップです。googleはやたらschemaを推奨していますし、日本はgoogle一辺倒ですからコッチのほうがあってる気もします。
Twenty Fourteenの場合、content.phpや、content-○○.phpで主な構造化が出来ると思います。

僕が設定したのは↓

<article itemscope itemtype="http://schema.org/Article" id="post-<?php the_ID(); ?>" <?php post_class(); ?>>
    <?php twentyfourteen_post_thumbnail(); ?>
    <header class="entry-header">
        <?php if ( in_array( 'category', get_object_taxonomies( get_post_type() ) ) && twentyfourteen_categorized_blog() ) : ?>
        <div itemprop="about" class="entry-meta">
            <span class="cat-links"><?php echo get_the_category_list( _x( ', ', 'Used between list items, there is a space after the comma.', 'twentyfourteen' ) ); ?></span>
        </div>
        <?php
            endif;

            if ( is_single() ) :
                the_title( '<h1 itemprop="name" class="entry-title">', '</h1>' );
            else :
                the_title( '<h1 itemprop="name" class="entry-title"><a itemprop="url" href="' . esc_url( get_permalink() ) . '" rel="bookmark">', '</a></h1>' );
            endif;
        ?>

        <div class="entry-meta">
            <?php
                if ( 'post' == get_post_type() )
                    twentyfourteen_posted_on();

                if ( ! post_password_required() && ( comments_open() || get_comments_number() ) ) :
            ?>
            <span class="comments-link"><?php comments_popup_link( __( 'Leave a comment', 'twentyfourteen' ), __( '1 Comment', 'twentyfourteen' ), __( '% Comments', 'twentyfourteen' ) ); ?></span>
            <?php
                endif;

                edit_post_link( __( 'Edit', 'twentyfourteen' ), '<span class="edit-link">', '</span>' );
            ?>
        </div><!-- .entry-meta -->
    </header><!-- .entry-header -->

    <?php if ( is_search() ) : ?>
    <div class="entry-summary">
        <?php the_excerpt(); ?>
    </div><!-- .entry-summary -->
    <?php else : ?>
    <div<?php if(is_single()): ?> itemprop="articleBody"<?php else: ?> itemprop="description"<?php endif; ?> class="entry-content">
        <?php
            the_content( __( 'Continue reading <span class="meta-nav">&rarr;</span>', 'twentyfourteen' ) );
            wp_link_pages( array(
                'before'      => '<div class="page-links"><span class="page-links-title">' . __( 'Pages:', 'twentyfourteen' ) . '</span>',
                'after'       => '</div>',
                'link_before' => '<span>',
                'link_after'  => '</span>',
            ) );
        ?>
    </div><!-- .entry-content -->
    <?php endif; ?>

content.phpはこんな感じ。
あってるのかはイマイチ分かりません(汗) 日本語の情報少なくて・・・。
一応、何となくこんな感じかなー?くらいで書いてます。
グーグルの支援ツールを使ってやってる部分もあるので大ハズレは無いと思うのですが、カテゴリの分類のトコロがitemprop=”about”で良いのか?シングル記事でitemprop=”articleBody”、それ以外でitemprop=”description”はあっているのか?
その辺かなり微妙です。支援ツールではitemprop=”articleBody”ってなってたので大ハズレでは無いと思うし、descriptionって簡単な説明みたいなもんかな?って思ったのでシングル記事以外ではdescriptionのが良いのかな?って事でこう書いてます。

後は、更新日と著者をtemplate-tags.phpで修正しなおせば大体OKなはずです。
他にも少しいじった気がしましたが、ブログなら似たようなマークアップなので簡単だと思います。

あとは何が正しくて、何が間違いか何処かに例文がもっと増えれば楽なのですが・・・

そんな感じです。

広告

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です