ステップ別にちょっとづつWordPressテーマの作り方を学ぶ本シリーズ。第三回はサイトのヘッダー部分を作る。
Contents [hide]
WordPressテーマ作りの概要
- WordPressテーマ開発環境の構築
- Webサイトをデザインする
- WordPressテーマの雛形を作る
- ヘッダーを作る
- サイドバーを作る
- フッターを作る
- トップページを作る
- WordPressテーマを動かす
WordPressテーマにするBootstrapサイトをおさらい
まずは本シリーズでテーマ化するサイトのおさらい。Bootstrapを使ったベーシックなブログだ。
少し長いけれど(把握しなくてOK)、HTMLはこのようになっている。説明に必要のない部分は削っている。
これをヘッダー、記事、サイドバー、フッターに分解してテーマにする。前回作成したテーマの雛形はこうだ。
ヘッダーを作る
ヘッダー部分をindex.htmlからheader.phpへ移す
まずは上の画像でheaderと書いてあるところを分解する。HTMLのhead要素と、body内のヘッダー部分をheader.phpへ移そう。
html要素のlang属性の指定
WordPressが用意しているlanguage_attributesを使うことで、html要素のlang属性を言語設定に合わせられる。html要素内部をこのように書き換えよう。
ページタイトル
ページのタイトル(home | web-site みたいなやつ)を設定する。
まずはheader.phpのtitle要素を消し、functions.phpにadd_theme_support(‘title-tag’);を記述する。
何やら、add_theme_support以外に色々な登場人物がいる。
まずadd_theme_supportを抱えるexampletheme_setup。これはセットアップ処理をまとめるために独自に作った関数で、テーマの初期化が終わった後に呼ばれるようadd_actionで指示している。もちろん、add_theme_supportをadd_actionに直接登録したっていい。
更にこの関数を括るif文は、子テーマでのカスタマイズを見越している。子テーマで同名の関数が定義された場合に、親テーマのセットアップ処理が走らないようにしているわけだ。
CSSの読み込み
テーマのCSSを読み込む
テーマのCSSファイルを読み込むため、head要素内のCSS用のlink要素を消し、functions.phpにwp_enqueue_styleを記述する。これはページにCSSを適用する関数だ。
まずはheader.phpから、テーマCSS読み込み用のこのlink要素を消す。
functions.phpを開き、CSS読み込み処理を記述しよう。title要素を設定した時に書いた登録処理に続いて記述する。
get_stylesheet_uriでテーマのCSSファイル(style.css)のURIを取得し、wp_enqueue_styleにexampletheme-styleで読み込みを指示している。第一引数に指定している『exampletheme-style』はこのCSSのハンドル名だ。あるCSSが他のCSSに依存するとき、この名前を使って依存先を指定することもできる。
ちなみにこの処理は子テーマによる上書きを期待していないため、title要素の時にやったような関数の存在判定はしない。
さて、WordPressテーマにスタイルを適用する設定はできたから、style.cssの中身を書けばここは一段落。シリーズ第二回でダウンロードしたBootstrapサイトのCSSを移し、先頭にテーマ名などの記述をする。この記述が無ければテーマのアップロードに失敗するから重要だ。
テーマCSS以外のCSSを読み込む
場合によっては、style.css以外にも必要なCSSファイルがある。今回はBootstrapを下敷きにしているため、当然BootstrapのCSSを読まないといけない。
まずは、テーマのCSSを読み込んだ時と同じようにfunctions.phpを開き、exampletheme_scriptsに追記する。
二つ目のwp_enqueue_styleでbootstrap用のCSSの読み込みを指示している。get_template_directory_uriでテーマディレクトリのURIが取れるので、そこから更に下へ潜って目的のCSSファイルを指している。このパスにCSSファイルを置こう。
この場合も、header.phpからCSS読み込み用のlink要素を消すのをお忘れなく。
favicon
ブラウザのタブ部分などに表示されるサイトのアイコン。これはWordPressのダッシュボードから変えられるので、あえて削っておく。header.phpでfaviconを読み込んでいる箇所を削除しよう。
wp_headアクション
テーマやプラグインがhead要素内で実行したい処理を呼び出すwp_headを</head>の直前に書く。
bodyのclass指定
お次はbody_classの出番。この関数をbody要素内に書けば、ページに応じたclassがbodyに付与されるため、ページ毎に見栄えを変えたい時に役立つ。
この関数を付けることで、例えば今回作成するページならhomeなるclassが付けられる。どのclassが付くかはページによって違うのだけれど、一部を抜き出すとこのようになる。
- フロントページ – home
- ブログ記事の一覧ページ – blog
- 単体記事ページ – sigle postid-(id), sigle-paged-(page number)
ページ毎のデザインを変えたい場合、わざわざ自分でclassを付けずとも、これら出来合いのclassを使うことができる便利設計となっている。body_classで追加されるclassはこちらに書いてあるから、適宜活用したい。
ナビゲーションメニュー
header.phpのコーディングもクライマックス。ここまで長かったけれど、あと一押し。ここでは、カスタムメニューを使ったナビゲーションメニューを作ってみよう。
カスタムメニューのHTMLのつくりは、div要素(あるいはnav要素)にulのリストが内包されたものだ。例えばこんな感じ。
次に、今回WordPressテーマ化するページのメニュー部分を見てみよう。
これをカスタムメニューに落としこむには、メニューを挿入する関数wp_nav_menuをオプション付きで呼び出せばいい。wp_nav_menuに渡す引数によってclassを付与できたり、メニューの作りを変えたり出来る。
header.phpのメニュー部分をこのように書き換えよう。
今回は、メニューをnav要素で囲うためにcontainerにnavを指定するのと、そのnav要素に元あったclassを付けた。他にも色々といじれるから、困ったら先のレファレンスを見て欲しい。また、theme_locationで、header-menuなるメニューを使うようにしている。
次に、元のメニューと同じ見た目、動作になるよう、style.cssを修正しよう。
最後に、functions.phpのexampletheme_setup内に、カスタムメニューを有効化する処理を書く。wp_nav_menuで使用したメニュー名をregister_nav_menusに渡そう。これで、WordPressのダッシュボードからHeader Menuに対して変更を掛ければ自動的にヘッダー部のメニューが更新されるようになる。
header.php出来!
最終的にはこのようなheader.phpが完成した。
header.phpの作成はここまで。次回はサイドバーにあたるsidebar.phpを作る。
WordPressテーマで儲けちゃいますか?他にはあまりない、テーマ販売についての書籍