post_class()のhentryクラスを投稿ページ以外で出力しないようにするカスタマイズ

SPONSORLINK

hentryは構造化データを定義するためのCSSクラスです。WordPressではpost_class()といって、ページに応じたclass名を自動生成してくれる便利な機能があります。

が、この中で自動生成されるhentryというclassがやっかいで、post_class()を設定した箇所全てに挿入されることになってしまいます。

投稿ページであればまだしも、アーカイブページや固定ページなどでも挿入されてしまうのがとてつもなく厄介です。

何が厄介かというと、hentryを定義した要素の中には、投稿日投稿者を特定のコードで指定してあげなければならず、普通のブログ記事では、投稿日・投稿者を指定するのは問題ないのですが、固定ページや記事一覧ページでは、デザイン上表示させたくない場合があります。

そんな時でもpost_class()を指定した箇所にはhentryが挿入されてしまうので、サーチコンソールなどで構造化テータの箇所を確認した際に、hentryエラーが発生してしまうのです。

全ページでhentryに対応させるというのが最良の手段のような気がするのですが、固定ページなどでは、投稿者や投稿日を表示させるのはいかがなものかとも思います。

だって、固定ページにも投稿者や投稿日が表示されるのなら、「投稿」と「固定ページ」を分ける意味がわからなくなってしまう気がするのです。

もちろんWordPressテーマの中には、固定ページでも投稿日や投稿者を表示しているテーマは多くあるのですが、個人的には固定ページは、日付などに左右されないプレーンな状態の方が好ましいと思うのです。

というわけで前置きが長くなってしまいましたが、今回は投稿ページ以外でhentryクラスを挿入させない方法を記載したいと思います。

投稿ページ以外でhentryクラスを除外するコード

投稿ページ(ブログ記事)以外でhentryクラスを除外するには、下記のコードをfunctions.phpに記載します。

// 投稿ページ以外でhentryクラスを除去
function remove_hentry( $classes ) {
    if (!is_single()) $classes = array_diff($classes, array('hentry'));
    return $classes;
}
add_filter('post_class', 'remove_hentry');

上記コードにより、post_class()を指定した箇所であっても、投稿ページにしかhentryを出力しなくなります。

なお、使用しているテーマによっては、hentryクラスを出力しなくすることで、CSSに不具合が生じ、サイトが崩れてしまう可能性も考えられます。

その場合は、テーマのstyle.cssなどデザインをつかさどっているCSSファイルを開き、ファイル内を「.hentry」でテキスト検索。もしも「.hentry」というのが出てきたら、その箇所を別のセレクタに置き換える必要があるかと思います。

テーマによっては上記のような施策が必要になる場合があるので、ご注意ください。

 

SPONSORLINK

\このサイトでつかってるのはこれ/

インパクトのあるアニメーション
WPテーマ「ハミングバード」

インパクトのあるアニメーションでブログを演出します。

新作!究極のモバイルファースト
WPテーマ「ストーク」

「新しいスマホビュー時代をつくろう」というのをコンセプトに、スマホでの見やすさ、操作しやすさにとことんこだわりました。

誰が使っても美しいデザイン
WPテーマ「アルバトロス」

シンプルかつ正統派のブログテーマです。

ABOUTこの記事をかいた人

香川県(うどん県)にてフリーランスWEBデザイナー/ディレクターとして活動。小規模なWEBサイト制作を得意とし、コンセプト設計からデザイン、コーディング、撮影にいたるまでのすべてをこなします。地方の良さを全国に広めていくお手伝いをしていきたいと思っています。