diff --git a/theme/basics/post-types.md b/theme/basics/post-types.md index 7d161ee..c1683de 100644 --- a/theme/basics/post-types.md +++ b/theme/basics/post-types.md @@ -1,17 +1,39 @@ + +# 投稿タイプ + +WordPress にはさまざまな種類のコンテンツがあり、これらのコンテンツのことを「投稿タイプ」と呼びます。ただし、WordPress にあるさまざまな種類のコンテンツをのことも投稿タイプと呼ぶため、少し混乱するかもしれません。たとえば、投稿は投稿タイプのひとつですが、固定ページも同様に投稿タイプと呼びます。 + +内部的にはどのような投稿タイプでもすべて同じ場所 (データベースの `wp_posts` テーブル) に保存されていて、 `post_type` カラムによって区別されます。 + +デフォルトの投稿タイプに加えて、カスタム投稿タイプも作成できます。 + +[テンプレートファイル](https://developer.wordpress.org/themes/basics/template-files/)のページでは、投稿タイプはそれぞれ対応するテンプレートファイルで表示されると説明しました。投稿タイプは扱っているコンテンツの種類を分類するためのものであり、テンプレートファイルはそれにもとづいてコンテンツを表示するものです。一般的には、特定の投稿タイプと特定のテンプレートファイルは紐づいています。 + +## デフォルトの投稿タイプ + +WordPress をインストールした際に利用可能な標準の投稿タイプがいくつかあります。主要なものは次のとおりです: + +* 投稿 (投稿タイプ: `post` ) +* 固定ページ (投稿タイプ: `page`) +* 添付ファイル (投稿タイプ: `attachment`) +* リビジョン (投稿タイプ: `revision`) +* ナビゲーションメニュー (投稿タイプ: `nav_menu_item`) +* ブロックテンプレート (投稿タイプ: `wp_template`) +* テンプレートパーツ (投稿タイプ: `wp_template_part`) + + +上記の投稿タイプはテーマやプラグインで変更したり削除できますが、広く配布する予定のテーマやプラグインにおいて WordPress に組み込まれた機能を削除することは推奨されません。 + +このハンドブックではその他の投稿タイプについて詳しく説明しませんが、[ナビゲーションメニュー](https://developer.wordpress.org/themes/functionality/navigation-menus/)の機能を操作して構築することは重要であり、これについてはこのハンドブックでのちほど詳しく説明します。 + +### 投稿 (post) + +投稿はブログでよく使われます。 + +* 最も新しい投稿が最初となるように、逆時系列順に表示されます +* 日付と時間が設定されています +* デフォルトの[タクソノミーであるカテゴリとタグ](https://developer.wordpress.org/themes/functionality/categories-tags-custom-taxonomies/)が適用できます +* フィードの作成に使われます + +投稿を表示するテンプレートファイルは次のとおりです: + +* `single`、`single-post` +* `category` と関連するファイル +* `tag` と関連するファイル +* `taxonomy` と関連するファイル +* `archive` と関連するファイル +* `author` と関連するファイル +* `date` と関連するファイル +* `search` +* `home` +* `index` + +[クラシックテーマでの投稿テンプレートファイルについてはこちらをご覧ください](https://developer.wordpress.org/themes/template-files-section/post-template-files/)。 + +### 固定ページ (page) + +固定ページは通常のブログフィードとは違って、静的な投稿タイプです。その特徴は以下の通りです: + +* 時系列に表示されません +* カテゴリーやタグといったタクソノミーで分類されません +* ある固定ページが他の固定ページを親に持つ階層化した構造にできます + +固定ページを表示するテンプレートファイルは次のとおりです: + +* `page` と関連するファイル +* `front-page` +* `search` +* `index` + +[クラシックテーマでの固定ページテンプレートファイルについてはこちらをご覧ください](https://developer.wordpress.org/themes/template-files-section/page-template-files/)。 + +### 添付ファイル (attachment) + +添付ファイルはコンテンツの中で画像やメディアを表示する際に使用し、関連するファイルへのリンクとしても使用されます。 + +* WordPress のメディアアップロードシステムを使ってアップロードされたファイルについて、ファイル名や説明などの情報を保持します +* 画像ファイルの場合、 `wp_postmeta` テーブルで保持されるファイルの情報も含みます (画像サイズ・サムネイル・ファイルの保存場所など) + +添付ファイルを表示するテンプレートファイルは次のとおりです: * `MIME_type` * `attachment` @@ -80,19 +182,37 @@ The template files that display the Attachment post type are: * `single` * `index` + +[クラシックテーマでの添付ファイルテンプレートファイルについてはこちらをご覧ください](https://developer.wordpress.org/themes/template-files-section/attachment-template-files/)。 + +## カスタム投稿タイプ + +カスタム投稿タイプを使うと**独自の「投稿タイプ」を作成**できます。カスタム投稿タイプはテーマ内ではなく、プラグイン内で定義することを強くおすすめします。そうすればテーマを切り替えてもカスタム投稿タイプのコンテンツが消えることなく他のテーマでも使い続けることができます。 + +カスタム投稿タイプの作成については、[プラグイン開発ハンドブック](https://developer.wordpress.org/plugins/post-types/registering-custom-post-types/)をご覧ください。 + +一般的にテーマ内でカスタム投稿タイプを新たに作ることはないものの、プラグインによって作られたカスタム投稿タイプを表示できるようにしておくことをおすすめします。次のテンプレートファイルでカスタム投稿タイプを表示できます: * `single-{post-type}` * `archive-{post-type}` * `search` * `index` + +[クラシックテーマでのカスタム投稿タイプのテンプレートファイルについてはこちらをご覧ください](https://developer.wordpress.org/themes/template-files-section/custom-post-type-template-files/)。 diff --git a/theme/basics/template-tags.md b/theme/basics/template-tags.md index b58e5d6..373bc14 100644 --- a/theme/basics/template-tags.md +++ b/theme/basics/template-tags.md @@ -1,80 +1,170 @@ + +# テンプレートタグ + +テンプレートタグは、テーマの中でブログのタイトルや完全なサイドバーといった**コンテンツをデータベースから取得する**際に使用します。次の理由から、テーマでコンテンツを表示する方法としてテンプレートタグが推奨されます: + +* コンテンツを動的に表示できます +* 複数のテーマファイルの中で使用できます +* テーマファイルを小さく、わかりやすい単位に分けられます + +## テンプレートタグとは ? + +テンプレートタグは、データベースから何かを取得するときに使う簡単なコードです。次の3つの要素で構成されています: + +* PHP コードタグ +* WordPress 関数 +* 任意のパラメータ + +テンプレートタグを使って、他のテーマファイルやデータベースの情報を取得できます。 + +たとえば `[get_header()](https://developer.wordpress.org/reference/functions/get_header/)` を使うと `header.php` ファイルを取得して、その内容を現在のテーマファイルの中に含めることができます。同様に、 `[get_footer()](https://developer.wordpress.org/reference/functions/get_footer/)` を使うと `footer.php` の内容を取得できます。 + +その他にもさまざまな種類のテンプレートタグがあります: + +* `[the_title()](https://developer.wordpress.org/reference/functions/the_title/)` – データベースからページのタイトルを取得して、テンプレートファイルに含めます。 +* `[bloginfo( 'name' )](https://developer.wordpress.org/reference/functions/bloginfo/)` – データベースからブログのタイトルを取得して、テンプレートファイルに含めます。 + +上記の例には、括弧の中にパラメータが含まれていることがわかります。パラメータを使うと次の2つのことができます: + +1. 特定の情報を取得する +2. 情報を任意の方法でフォーマットする + +[パラメーターについては以下で詳しく説明します](#parameters)が、 WordPress 固有のタグでデータの表示方法を制御できることを知っておくと便利です。 + +## なぜテンプレートタグを使うのか + +テンプレートタグを使うとコンテンツの任意の部分をカプセル化できるので、テーマファイルにさまざまな種類のテンプレートを含めることが簡単になり、テーマの保守も容易になります。 + +`header.php` ファイルを1つ作成して `single.php`, `page.php`, `front-page.php` といったテーマファイルで `[get_header()](https://developer.wordpress.org/reference/functions/get_header/)` を使ってその内容を参照するほうが、各テーマファイルの中にまったく同じコードをコピー&ペーストするよりもはるかに簡単です。 `header.php` ファイルを編集すると、自動的にすべてのテーマファイルの中に反映されるので、テーマの保守も容易になります。 + +また、テンプレートタグを使うことで、データベースから取得するような動的なデータの表示も可能です。ヘッダーの中に `title` タグを含める際、次のようにハードコードできます: ```xml