Warning: count(): Parameter must be an array or an object that implements Countable in /home/xs638785/agile-software.site/public_html/wp-content/plugins/rich-table-of-content/functions.php on line 490
まずテーマのディレクトリ名を決める必要があります。
次にテーマの必須ファイルである「style.css」を作成します。
style.cssの冒頭に次のルールでコメントを記述することでWordPressのテーマとして認識します。
/*
Theme Name: BISTRO CALME
Theme URI: http://example.com
Description: BISTRO CALMEのテーマです。
Version: 1.0
Author: Nakashima
Author URI: https://gihyo.jp
*/
テーマにはstyle.css以外にindex.phpが必要です。
「<?php echo get_template_directory_uri(); ?>」という記述はWordPressであらかじめ用意している「テーマのディレクトリまでのURL」を表示するための関数です。
テーマのインストール
作成したテーマの「bistro-calme」フォルダー一式をWordPressの「themes」ディレクトリの中にアップロードします。
/wp-content/themes/bistro-calme/index.php
/wp-content/themes/bistro-calme/style.css
/wp-content/themes/bistro-calme/assets/~
テンプレートファイル
WordPressでは記事ページのデザインだけを変えたい場合は、「single.php」という名前でテーマ内にテンプレートファイルを作ります。
すると、記事ページにアクセスがあったときにはsingle.phpが表示されるようになります。
このようにWordPressはアクセスされたページに合わせて表示するテンプレートファイルを自動的に変更します。
テンプレートファイル名 | 概要 |
front-page.php | Webサイトのトップページを表示 |
single.php | 投稿の記事ページを表示 |
page.php | 固定ページを表示 |
category.php | カテゴリーページを表示 |
search.php | 検索結果ページを表示 |
archive.php | 記事一覧を表示 |
404.php | 404エラーページを表示 |
front-page.phpがWebサイトのトップページを表示するのですが、index.phpしか存在しなくても正しくトップページが表示されました。
これはいったいどういうことでしょう?
実はWordPressにはテンプレートファイルの優先順位があるのです。アクセスされたページによって優先順位が高いテンプレートファイルを探します。
そして、該当するテンプレートファイルがあれば、そのファイルを表示する仕組みになっています。
つまり、bistro-calmeテーマにはfront-page.phpが存在しなかったので、代わりに次に優先順位の高いindex.phpが表示されたということです。
WordPressがテンプレートファイルを表示するルールを「テンプレート階層」と呼びます。
テンプレート階層では各ページで優先順位が最も低いファイルはすべてindex.phpになっています。
つまり、すべてのページが同じデザインで良いのであれば、index.phpだけですべてのページを表示することが可能です。
テンプレートタグ
<?php bloginfo('name');?>
トップページへのリンク
トップページへのリンク
トップページのURLを返す。
- $path:ホームURLからの相対パス
- $scheme:ホームURLに使うスキーム
home_url($path, $scheme)
<h1><a href="<?php echo home_url(); ?>"><img src="<?php echo get_template_directory_uri(); ?>/assets/img/common/logo@2x.png" alt="BISTRO CALME"></a></h1>
bodyタグのクラスを動的に出力
bodyタグのclass属性を表示する
body_class($class)
テンプレートの分割
Webサイトのヘッダーやフッターはトップページ以外のページでも同じように出てきます。他のページでも共通に使う箇所は「テンプレートパーツ」として別のファイルに分離させることができます。
header.phpを作成する
get_footerインクルードタグでheader.phpを作成する
index.phpからheader.phpを読み込む必要があります。header.phpは「get_header」インクルードタグで読み込むことができます。
get_header($name)
get_headerインクルードタグでfooter.phpを作成する
index.phpからfooter.phpを読み込む必要があります。footer.phpは「get_footer」インクルードタグで読み込むことができます。
get_footer($name)
jQueryの読み込み
WordPressを使ったWebサイトでは様々なプラグインを利用します。
こうしたプラグインの中にもjQueryを読み込むものがあります。
ところが、テーマの中ですでにjQueryを読み込んでいたとき、プラグイン側で同じjQueryを利用していると読み込みが重複してしまいます。
このようなJavaScriptの重複読み込み問題を解決するために、WordPressには「wp_enqueue_script」関数が用意されています。
wp_enqueue_scriptは読み込むライブラリ名をパラメータで渡します。
jQueryの場合は「wp_enqueue_script(‘jquery’)」と記述するだけでjQueryを一度だけ読み込むことができるようになります。
wp_enqueue_script($handle, $src, $deps, $ver, $in_footer)
<?php
wp_enqueue_script('jquery');
wp_head();
?>
</head>
条件分岐タグを使ってトップページだけ表示を変更する
トップページの時だけ表示したい場合は「is_home」条件分岐タグを使います。
該当するHTMLをPHPのif文と組み合わせて
- $path:トップページかどうか調べる
is_home()
<?php if ( is_home() ): ?>
<div class="jumbotron">
<div class="jumbotron_item" style="background-image: url('<?php echo get_template_directory_uri(); ?>/assets/img/home/jumbotron-1@2x.jpg')"></div>
<div class="jumbotron_item" style="background-image: url('<?php echo get_template_directory_uri(); ?>/assets/img/home/jumbotron-2@2x.jpg')"></div>
<div class="jumbotron_item" style="background-image: url('<?php echo get_template_directory_uri(); ?>/assets/img/home/jumbotron-3@2x.jpg')"></div>
</div>
<?php endif; ?>
is_home以外にもWordPressには非常に多くの条件分岐タグが用意されています。
条件分岐タグ | 内容 |
---|---|
is_home() | トップページかどうかを判定 |
is_single(‘パラメータ’) | 記事ページかどうかを判定 |
is_page(‘パラメータ’) | 固定ページかどうかを判定 |
is_category(‘パラメータ’) | カテゴリーページかどうかを判定 |