WordPressの body_class()にページスラッグを

WordPressテーマのheader.phpあたりにある

   <body <?php body_class(); ?>>

こと細かにclassが出力されるので便利だけど、pegeの内容ごとにデザインを変えたい場合、デフォルトだとpageのslugが出てこないので不便です。
そこでcodexのbody_class()をみると、簡単に拡張できる仕様になっていることが分かりました。なので例えばこんなかんじにすればもっと助かります。

   <body <?php
        if (is_page()) {
            $page = get_page(get_the_ID());
            $slug = $page->post_name;
            body_class("page-" . $slug);
        } else {
            body_class();
        }
        ?>>

ほかにも条件分岐によってかなり柔軟なclass割り当てができますね。

2013/6/27追記

このような記事を見つけました。こちらのほうがずっとスマートですね。
functions.phpに以下を追加します。

function pagename_class($classes = '') {
         if (is_page()) {
             $page = get_page(get_the_ID());
             $classes[] = $page->post_name;
         }
	return $classes;
}

add_filter('body_class','pagename_class');

2014/3/16追記

親ページについても表示できるように、この記事をさらに実用的にしました。
→ WordPressの body_class()にページスラッグの決定版

Did you like this? Share it:

「WordPressの body_class()にページスラッグを」への1件のフィードバック

コメントを残す

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