自作のテーマを作っている人ならわかってもらえると思いますが、WordPressのテンプレートタグってなかなか覚えられないですよね…。
そんなわけで、よく使うものをまとめてみました。
テーマまでのURL
テーマ内にある画像やスタイルシートを読み込むときには「<?php echo get_template_directory_uri();?>」を使います。
このタグには「https://ドメイン/wp-content/theme/テーマ名」が入っています。
■画像を表示するには下記のように記述
<img src="<?php echo get_template_directory_uri();?>"/○○○.jpg">
■「img」フォルダにある画像を表示する
<img src="<?php echo get_template_directory_uri();?>"/img/○○○.jpg">
■スタイルシートを読み込むには下記のように記述
<link rel="stylesheet" type="text/css" href="<?php echo get_template_directory_uri();?>/〇〇〇.css">
■「css」フォルダにあるスタイルシートを読み込む
<link rel="stylesheet" type="text/css" href="<?php echo get_template_directory_uri();?>/css/〇〇〇.css">
末尾に「/ (スラッシュ)」は付かないので、注意してください。
子テーマの場合
子テーマを使用している場合は「<?php echo get_stylesheet_directory_uri();?>」を使います。
このタグには「https://ドメイン/wp-content/theme/子テーマ名」が入っています。
■子テーマまでのパス
<?php echo get_stylesheet_directory_uri();?>
■子テーマディレクトリにある画像を表示する
<img src="<?php echo get_stylesheet_directory_uri();?>"/○○○.jpg">
■子テーマディレクトリのスタイルシートを読み込む
<link rel="stylesheet" type="text/css" href="<?php echo get_stylesheet_directory_uri();?>/〇〇〇.css">
子テーマから親テーマの画像やスタイルシートを読みたい時もありますよね。
そんな時は「<?php echo get_template_directory_uri();?>」を使います。
インクルード系
他のテンプレートファイルを読み込みたいときには「<?php get_template_part();?>」を使います。
一覧ページなどのループ文内で使うことが多いと思います。
■content.phpを読み込む
<?php get_template_part('content');?>
■「template-parts」フォルダ内の「content.php」を読み込む
<?php get_template_part('template-parts/content');?>
拡張子「.php」は記述しません。
このタグの便利なところは、絶対パス扱いなので、階層を気にしないで使えるところです。
下記のような階層があったとします。
sample-theme
├ index.php
├ author-bio.php
└ template-parts
├ content.php
└ entry-tag.php
「index.php」で「template-parts」内の「content.php」を読み込むには、上記のように「<?php get_template_part(‘template-parts/content’);?>」と記述します。
では「template-parts」内の「content.php」で「template-parts」内の「entry-tag.php」を読み込みたいときはどうでしょう?
■「template-parts」内の「entry-tag.php」を読み込む
<?php get_template_part('template-parts/entry-tag');?>
同じフォルダ内なので「<?php get_template_part(‘entry-tag’);?>」と書きたくなるところですが、「<?php get_template_part(‘template-parts/entry-tag’);?>」なんですね。
「template-parts」内の「content.php」で1つ上の階層の「author-bio.php」を読み込むときは下記のようになります。
■「template-parts」内から1つ上の階層の「author-bio.php」を読み込む
<?php get_template_part('author-bio');?>
「現在のファイルは、この階層にいるから、あのファイルを読み込むには…」などと考えなくてもよいのです。
特定のファイルを読み込むタグ
「<?php get_template_part();?>」以外にも、特定のファイルを読み込むためのタグも用意されています。
■ヘッダー(header.php)を読み込む
<?php get_header();?>
■フッター(footer.php)を読み込む
<?php get_footer();?>
■サイドバー(sidebar.php)を読み込む
<?php get_sidebar();?>
■コメントフォーム(comments.php)を読み込む
<?php comments_template();?>
■検索フォーム(searchform.php)を読み込む
<?php get_search_form();?>
出力系
サイトの情報などを表示するときに使います。
サイト情報系
「<?php bloginfo(‘〇〇’);?>」、「<?php echo get_bloginfo(‘〇〇’);?>」のように括弧内にシングルクォーテーションを囲った引数の情報を出力します。
「get_」を付けるとPHPの値として渡すことができます。
その場合、表示するには「echo」が必要になります。<?php echo get_bloginfo(‘〇〇’);?>
bloginfo(‘name’)
サイト名を表示します。(管理の「各種設定」→「一般設定」の「サイトのタイトル」)
bloginfo(‘description’)
キャッチフレーズを表示します。(管理の「各種設定」→「一般設定」の「キャッチフレーズ」)
bloginfo(‘url’)
サイトのURLを表示します。(管理の「各種設定」→「一般設定」の「サイトアドレス」)
※現在では非推奨になっているようで、次に紹介する「home_url()」が推奨されています
home_url()
サイトのURLを表示します。(管理の「各種設定」→「一般設定」の「サイトアドレス」)
適切でない文字列を除去してくれる「esc_url()」と一緒に「<?php echo esc_url(home_url());?>」のように使います。
投稿系
投稿や固定ページに関する情報や内容を表示します。
記事のループ処理内で使用しないと、予期せぬ表示をすることがあります。
・ループ処理とは
一般には、同じことを繰り返し行う時に使う言葉ですが、WordPressでは下記のような記述があることをいいます。
<?php while(have_posts()):the_post();
//ループする内容
endwhile;?>
固定ページや記事単体のページなど、特に繰り返して表示していなくてもループ処理は行われています。
the_title()、get_the_title()
記事やページのタイトルを表示します。
the_content()、get_the_content()
記事やページの本文を表示します。
the_excerpt()、get_the_excerpt()
記事やページの抜粋を表示します。
※the_excerpt()には<p>タグが付いてしまう。
the_ID()、get_the_ID()
記事やページのIDを表示します。
the_author()、get_the_author()
記事やページの投稿者を表示します。
the_permalink()、get_the_permalink()
記事やページのURL(パーマリンク)を表示します。
これらは「bloginfo()」と同じように「get_」を付けるとPHPの値として渡すことができます。その場合、表示するには「echo」が必要になります。
the_category()
記事のカテゴリー(リンク付き)を表示します。
※get_the_category()にするとカテゴリーの情報を取得することになる。
the_tags()
記事のタグ(リンク付き)を表示します。
※get_the_tags()にするとタグの情報を取得することになる。
the_terms()
記事のタクソノミーのタームを表示します。
カスタム投稿などに使用します。
※get_the_terms()にするとタームの情報を取得することになる。
まとめ
ここでは、よく使うもの、代表的なものを紹介しました。
他にもWordPressのタグはもっといっぱいあります。
ボクが知らないだけで、もっと便利なタグがあるかもしれません。いや、きっとあるんだろうなぁ。