サポート » テーマ » テンプレートファイルの基本的設定に関する質問

  • 解決済 Anonymous User 4963935

    (@anonymized-4963935)


    WordPressに関しては10月から始めた初心者です。
    WordPress2.4.8を、ブログとしてではなく、通常サイトのCMSとして使用するためにカスタマイズしています。

    サイトのテンプレートは、トップページとその他のページで作りたいのですが、トップページのみ専用デザインで、その他のページは共通デザインとします。そしてその他のページは、通常のPAGE(page.php)使用し、かつ、利用者が任意にページ数を増やしていけるようにします。デザインは、2コラム(左がメニュー、右がコンテンツ)+ヘッダー+フッターといった基本的なものです。

    <上記のテンプレートに関する質問ですが以下となります>
    質問1:
    そもそも、どのようにして特定のファイルをそれがトップページのテンプレートファイルであると指定することが出来るのかわかりません。また、同じく特定のファイルをそれがその他ページ(トップページ以外のページ)のテンプレートファイルであると指定するにはどうすればよいのでしょうか?

    質問2:
    PAGE(管理画面の「ページ」タブ。以下同様。)に関する管理画面からの入力データはpage.php又はindex.phpファイルのテンプレートを使用してのみ出力可能なのでしょうか?または、どのような種類のデータ(例:通常PAGEのデータ)をサイトに表示するのかとそのデータを出力するテンプレートファイルのファイル名とは何ら関係ないのでしょうか(テンプレートファイルのファイル名は、ランダムに好きなように決めてよいですか?)?

    どのような種類のデータ(例:PAGEのデータ)をサイトに表示するのかとそのデータを出力するテンプレートファイルのファイル名が関係ある場合、もしも一つのテーマ内にpage.phpとindex.phpの両方が存在していたらPAGEのデータはどちらのテンプレートを基に出力されるのでしょうか?その他管理画面から入力される様々な種類のデータとそれを出力するファイルのファイル名の関係が良く分かりません。

    質問3:
    サイトに管理画面から情報が全く投稿されていない状態(初期状態)でも、トップページのみは常に表示された状態にし、サイトにおけるトップページの表示をサイトの利用者が削除(又は非表示に)できなくしたいです(トップページに情報が投稿されていない場合は、テンプレートタグの部分はブランクとなって構いません。)。

    これには特殊な記述がトップページファイルに必要又は特殊な設定が管理画面に必要なのでしょうか?必要な場合は、それがどのような記述又は設定なのか教えて下さい。特に何も記述又は設定等が必要ない場合も、その旨を教えていただけると幸いです。

    よろしくお願いします。

5件の返信を表示中 - 1 - 5件目 (全5件中)
  • こんにちは。
    まずは WordPress テーマのテンプレートには大きく分けて通常の「テンプレート」と「ページテンプレート」の 2 種類があるということを頭に入れてから、以下をお読みください。

    質問 1 について:
    「ページ(以下 固定ページ)」をトップページとしたい場合、まず「表示設定」の「フロントページ」という項目で、その固定ページをフロントページとして指定しておきます。

    次に、その固定ページのページテンプレートを指定します。使用中のテーマのディレクトリ内に 1 つ以上、ページテンプレートを作成すると、固定ページ編集画面の「属性」というボックスに、ページテンプレートを選択するドロップダウンリストが表示されるようになります。このドロップダウンリストで、その固定ページに適用したいページテンプレートを指定します。

    固定ページは使用せず、単純に通常のトップページをカスタマイズしたいのであれば、 home.php という名前のテンプレートファイルを作成します。

    質問 2 について:
    WordPress にもう少し詳しくなれば、どのテンプレートファイルでも固定ページのデータを表示させることが出来るようになると思います。が、これについては別の話になりますので割愛します。

    index.php, home.php, page.php, category.php, search.php など、いくつかのファイル名は WordPress において予約済みです。 WordPress は特定のページを表示するためのテンプレートを探す際、決められた順番に、該当するファイルが存在するかどうかを探します。そして、ファイルが見つかると、そのファイルをテンプレートとしてページを出力します。

    一方、ページテンプレートの名前については、テンプレートファイルの中で指定するものなので、そのテンプレートファイルのファイル名とは直接の関係はありません。予約済みの名前でなければ、どんなファイル名でもいいと思います。しかし運用上、例えば about ページのページテンプレートを作成した場合、 about.php などとしておいた方が分かりやすいですよね。それだけのことです。

    質問 3:
    サイトの利用者にページを削除されたくない場合は、適切にユーザー権限を割り振ることでそれを防止することが出来るかと思います。管理者権限を持ったユーザーが作成したページは、同じ管理者権限を持ったユーザー以外には削除できません。そして通常、利用者全員が管理者になる必要はありません。

    投稿や固定ページがひとつも存在しない状態でも、トップページを正常に表示したい、というケースでは、固定ページをフロントページにする方法は使用できない理屈になるので、利用中のテーマの home.php をそのようにカスタマイズされるのがいいと思います。
    或いは、併せ技で、フロントページが存在する場合としない場合のページをそれぞれ作成するのも、場合によってはありかもしれません。

    全質問共通:
    まずはテンプレートの階層について理解を深められるべきだと思います。予約済みテンプレートの名前、優先順位、ページテンプレートの作成方法、など、すべて WordPress Codex 日本語版に邦訳が掲載されていますので、一度お読みになってはいかがでしょうか?

    トピック投稿者 Anonymous User 4963935

    (@anonymized-4963935)

    mizubeさん
    ご回答、ありがとうございました。

    上記のリンク拝見し、大変ためになりました。いろいろ調べてみましたが以下の点がまだ分かりませんので、ご指導いただけると幸いです。

    まず、一つmizubeさんに私の作業内容が伝わっていなかった部分があったようなので明快にしますと、私が現在行っているのは“存続のテンプレート(他人が作成したテンプレート)をカスタマイズする作業ではありません。”今回の場合、私がテンプレートをほぼ初期の状態から作成しています。理由ですが、今回の作業に関しては、私が過去に作成した静的サイトを見栄えの変化を最小限におさえながらCMS化する必要があるからです。

    上記の点を踏まえて追加質問させていただきます。

    質問1-1

    固定ページは使用せず、単純に通常のトップページをカスタマイズしたいのであれば、 home.php という名前のテンプレートファイルを作成します。

    home.phpが存在する場合home.phpがトップページとなることは分かりましたが、home.phpは固定ぺージにすることは出来るのでしょうか?home.phpが予め予約されたファイル名だということは分かりましたが、home.phpが固定ページに成りえるのかどうか分かりませんでした(home.phpの種類<カテゴリーページ、固定ページ、日付別ページ等>がよく分かりません。)。

    質問1-2
    私にはトップページと固定ページの違いについて理解が出来ませんでした。固定ページのデータは管理画面の「ページ」→「新規追加」から投稿又は編集できますが、固定ページとしてのトップページ(index.php又はhome.php)のデータは管理画面のどこから投稿又は編集できるのでしょうか?なお、私が今回のサイトに使用したいトップページは固定ページで、その他のページで使用する固定ページとは多少デザインが異なる程度です(今回のトップページはそれ自身に固定ページとして(又は固定ページのように)データを投稿又は編集できるもので、他のページのデータをトップページに表示させるものではありません。)。

    ちなみに、今回の場合、その他のページ(トップページ以外のページ)のテンプレートファイル名は、page.phpにするつもりです。

    質問1-3
    また、「index.php はテーマに必須」
    WordPress Codex テンプレート階層 仕組
    とCodexに記載してありましたが、今回のようにトップページとその他のページの2パターンからのみテンプレートが構成される場合、index.php はCodexがテーマに必須としているためにhome.php よりもindex.phpをトップペーとして管理画面の「表示設定」→「フロントページ」という項目で指定しておくべきなのでしょうか?

    しかし、管理画面の「表示設定」→「フロントページ」という項目でindex.phpをトップページとして指定(固定)できますか? 私が見る限りでは、index.phpは当該項目に選択肢としてありませんでした。?

    質問1-3
    トップページは、固定ページ(又は固定ページと性質が同じもの)にしたいのですが、index.phpをトップペーとした場合、どのようにしてそのindex.php(トップページ)を固定ページとしてWordPressに認識させることが出来るのでしょうか?

    質問 2 について:

    WordPress にもう少し詳しくなれば、どのテンプレートファイルでも固定ページのデータを表示させることが出来るようになると思います。が、これについては別の話になりますので割愛します。

    上記の方法こそが、今回の私の問題の解決のカギとなるように思うのですが…(できれば、割愛せずにご指導ください。)

    質問3-1

    サイトの利用者にページを削除されたくない場合は、適切にユーザー権限を割り振ることでそれを防止することが出来るかと思います。管理者権限を持ったユーザーが作成したページは、同じ管理者権限を持ったユーザー以外には削除できません。そして通常、利用者全員が管理者になる必要はありません。

    上記は、理解しました。しかし、利用者にトップページは削除されたくはないものの、編集はさせたいのです(トップページは固定ページなので。)。このような場合、どのような対処方法があるでしょうか?利用者に管理者権限を渡さなかった場合、その利用者はトップページを削除できないが、編集はできるのでしょうか(それは、どのような権限を利用者に渡せばよいですか?)?

    質問3-1
    前提として、今回はフロントページが存在する場合としない場合のページをそれぞれ作成するよりも一つのトップページテンプレートでトップページをまかないたいとおもいます。

    投稿や固定ページがひとつも存在しない状態でも、トップページを正常に表示したい、というケースでは、固定ページをフロントページにする方法は使用できない理屈になるので、利用中のテーマの home.php をそのようにカスタマイズされるのがいいと思います。

    私が言うところの「投稿や固定ページがひとつも存在しない状態でも、トップページを表示したい」というのは、投稿や固定ページがひとつも存在しない状態ではトップページに最低限ヘッダーが表示されていれば十分です。この場合、トップページはindex.php(性質的には固定ページのような)で事足りるかと思いますが、そのindex.phpに投稿するデータ(index.phpを固定ページとして、それに表示するデータ)を管理画面のどこから入力できるのか分かりません。

    使用中のテーマのディレクトリ内に 1 つ以上、ページテンプレートを作成すると、固定ページ編集画面の「属性」というボックスに、ページテンプレートを選択するドロップダウンリストが表示されるようになります。このドロップダウンリストで、その固定ページに適用したいページテンプレートを指定します。

    と教えていただきましたが、管理画面の「ページ」→「新規追加」の「属性」というボックスにindex.htmlの選択肢は表示されません。「デフォルトテンプレート」とありますが、これは今回の私のサイトの場合その他ページのテンプレート(page.php)になるように思います。

    今回は、トップページ及びその他ページの2パターンのみ固定ページのみ構成で事足りるのですが、トップページにどのようなファイル(index.php、home.php又はカスタムファイル?)を使用して、そのファイルのデータをどこから投稿及び編集するかが分からないしだいです。

    よろしくお願いします。

    トピック投稿者 Anonymous User 4963935

    (@anonymized-4963935)

    「投稿や固定ページがひとつも存在しない状態でも、トップページを表示したい」という私の要望が事態を複雑化しているのなら、投稿や固定ページがひとつも存在しない状態ではサイト自体が何も投稿されていない場合のデフォルトの表示(又は何も表示されなくても)結構です。

    少々中途半端な理解になって余計に混乱しているように見受けられます。
    いっぺんに解決は難しそうなので、少しずつ・・・

    まず、理解してほしいことはindex.phpやhome.phpというファイルは基本的にはすべて「テンプレート」です。(とりあえずどこでどう使われるとかは置いておいてください)
    wordpressでは投稿された記事や、ページ作成で入力された文章などを「ループ」と呼ばれるテンプレート内の記述で呼び出して表示します。
    例えばindex.phpに

    headerを呼び出す記述
    ループの記述
    普通にhtmlの記述
    footerを呼び出す記述

    のように記述すれば、header、footerが呼び出されるのは理解できると思いますが、ループの記述の部分で、デフォルトの設定のままであれば「投稿記事」が「10件分」表示されます。表示設定で固定ページを選択して、どれかのページを指定していれば、このループの部分にページで作成した文章が表示されます。

    先ほどのindex.phpには「普通にhtmlの記述」という部分を作っていますが、このようにループとは関係ない部分に通常のhtmlの記述を行えば、それは投稿記事やページに記述した内容とは関係なく、記述したhtmlが表示されます。つまりこれこそがテンプレートのデザインそのものになります。

    具体的にいうと、ループの記述の前後に

    <div style="color:red">
    ループの記述
    </div>

    などのように記述すればループで表示される部分の文字は全て赤文字になりますね。

    これを踏まえて、次に「ページテンプレート」に関してですが、Codexを読まれていれば理解されていると思いますが、ページテンプレートはそのファイル内に「これはテンプレートですよ」という記述を行わなければページ作成時のテンプレートの項目には表示されません。
    index.phpであろうが、home.phpであろうが、ページテンプレート特有の記述をしていなければページ作成時のテンプレート欄には表示されません。逆を言えばその記述さえあればきちんと表示されます。これは自身で試してみたほうが分かりやすいと思いますよ。

    wordpressとしての「テンプレート」とページ特有の「ページテンプレート」が理解できれば半分は解決するのではないでしょうか;)

    トピック投稿者 Anonymous User 4963935

    (@anonymized-4963935)

    shokun0803さん
    ご回答、ありがとうございました。

    上記の質問に関しては、上記のshokun0803さんのご回答及び別の質問スレに対する質疑応答でなんとなく分かってきたので、一旦、解決済みとさせていただきます。

    私の方でもしばらくトライ&エラーさせて頂く時間が必要です。

5件の返信を表示中 - 1 - 5件目 (全5件中)
  • トピック「テンプレートファイルの基本的設定に関する質問」には新たに返信することはできません。