質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

89.62%

【wordpress】ディレクトリ構成で悩んでいます

解決済

回答 2

投稿 編集

  • 評価
  • クリップ 0
  • VIEW 2,967

t-book

score 34

こんにちは。いつもお世話になっております。
現在wordpressで一部ページをCMS化したサイトを作成しています。
理想とするディレクトリ構成がなかなか上手くできずに困っております。
どのようにすれば実現できるのか、ご助言いただきたく投稿いたします。

 実現したいディレクトリ構成

root┬─/_cms/─/wp/─/wp-config...
    │
    ├─/post1/
    │
    ├─/page1/
    │
    ├─/hoge/┬─index.html (.phpならできるが...)
    │         ├─/post2/
    │         └─/page2/─/page3/
    (略)
    └index.html (.phpならできるが...)
  • /_cms/ 以下にwpをインストール
  • /post1/は投稿タイプとしてルート直下のサブディレクトリで表示させたい
  • /page1/は固定ページとしてルート直下のサブディレクトリで表示させたい
  • /post2/はカスタム投稿タイプとして、/hoge/以下のサブディレクトリで表示させたい
  • /page2/は固定ページとして、/hoge/以下のサブディレクトリで表示させたい
  • /page3/は固定ページとして、/page2/以下のサブディレクトリで表示させたい
  • ルートおよび/hoge/のトップページをindex.htmlにしたい

 現在行っていること

  • インストールとは別ディレクトリでwpを使うために
ルート直下にindex.phpを置いて、requireでインストール先pathを指定
  • /post1/, /post2/のURL
post1は通常のパーマリンクで設定
post2はCustom Post Type Permalinksで、/hoge/以下を指定できるようパーマリンク設定
  • /page2/, /page3/のURL
/hoge/という固定ページを作成して、それを親としてpage2を、その孫としてpage3の固定ページを作成

 index.php -> index.htmlにできないか

ルートおよび/hoge/直下のindex.php(正確には/hoge/という固定ページの作成)は、中身自体には動的な要素は無いためできれば普通のhtmlとして管理したいのです。
(本番サーバのスペックが不明なため、なるべく動的生成ページは避けたいとの意図があります)

 現在試行錯誤していること

  • ルート直下にindex.phpをおかないで、別ディレクトリにインストールしたwpをサブディレクトリで使用できないか
検討つきません...
  • page2,3固定ページのパーマリンクに、直接下階層のURLを指定できないか
親子関係ではなく、Custom Post Type Permalinksを使った時のように直接、下階層を指定したい
(/hoge/固定ページを作成しないで、/hoge/page2/のように指定したい)
------
Custom Permalinksを使えば同じように自由にパーマリンクを設定できるが、投稿タイプやカスタム投稿タイプにも自由編集機能が反映されてしまうため避けたい...

以上、長文となってしまいましたが何か妙案がありましたらご教授いただければ幸いです。
よろしくお願いします。
  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 過去に投稿した質問と同じ内容の質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 2

check解決した方法

0

 解決方法

  • 今まで通りルート直下にはindex.phpを設置し、/hoge/は固定ページとして作成しておく
  • それぞれ同じ階層にindex.htmlを設置し、.htaccessで.phpよりも.htmlが優先されるように設定
DirectoryIndex index.html index.php
※index.phpの設置、/hoge/固定ページの作成すらしなくて済むのであればなお良いのですが、さほど実害も無さそうなので...
※なお/index.html, /index.phpでアクセスしようとすると、wp側で / へリダイレクトされる模様

 解決できなかった理由

後学のために、なぜすぐに思いつかなかったのか、メモしたいと思います。

  • index.htmlとindex.phpを同じ階層に置くという発想がなかった
確かに普通に考えればファイル名が同じでも拡張子が異なれば別ファイルのはずなので、並列にしても問題なかった。
すると実際の表示はどうなるのか → サーバ側で拡張子の優先順位を設定することができることを知った

  • ルートのindex.phpでwpの環境設定テンプレを読んでいるので、index.htmlをおいたらwpが動作しなくなると思い込んでいた
require( './.../wp-blog-header.php' );
確かにindex.phpを消してしまうと/post1/など表示できなくなってしまった。
しかしindex.phpを残してindex.htmlを用意し優先順位を付けただけでは、変わらず表示されることが確認できた。※恐らく表示上の優先順位だけであり、内部的にindex.php内に記述したrequireは動作してくれる模様。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

0

たくさん質問がありましすが、ひとつずつ。

index.php -> index.htmlにできないか

index.htmlを作成してアップロードしたい、という話でしょうか。
WordPressとは無関係に、手でアップロードするのは問題ありません。
WordPressの管理コンソールから、index.htmlを編集できるようにする、ということだとすると、うーんという感じです。できるようにすることは可能ではあるけれど、DocumentRoot下のディレクトリにあるファイルを直接編集する機能をWordPressに持たせることは、セキュリティホールを作りかねないので、私ならやりません。

なお、

(本番サーバのスペックが不明なため、なるべく動的生成ページは避けたいとの意図があります) 

とのことですが、実際には<?php ?>が含まれていない、拡張子が.phpであるだけの静的ファイルの負荷は、.htmlとほとんど変化ないと思います。厳密には違いはありますが、それが問題になるほどのPVがあるなら、WordPressはまともに動かないんじゃないかな...

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2015/04/14 12:07

    chokojori 様
    ご回答ありがとうございます!

    > index.htmlを作成してアップロードしたい、という話でしょうか。
    その通りです。wp上でhtmlを編集したいということはありません。

    > 実際には<?php ?>が含まれていない、拡張子が.phpであるだけの静的ファイルの負荷は、.htmlとほとんど変化ないと思います。
    そうでしたか!.phpは負荷が重たいとの漠然とした認識があったため、.htmlファイルに変えるべきだと思い込んでいました。
    今回のケースの場合、負荷という観点では気にすることはない、と分かっただけでもありがたいです!

    せっかくご質問いただいた中で恐縮なのですが、ほぼ後述の様な手順で解決することができました。
    今回は自己解決という形になってしまいましたが、chokojori様の「WordPressとは無関係に、手でアップロードするのは問題ありません」
    との一言でふと思いつきましたので、改めて御礼申し上げます。

    キャンセル

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 89.62%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる