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

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

ただいまの
回答率

88.80%

wordpress customize.phpでの不具合

受付中

回答 2

投稿 編集

  • 評価
  • クリップ 0
  • VIEW 270

kaz1214

score 5

index.htmlとindex.phpが /に共存している状態での質問なのですが、

WordPress アドレス (URL https://hoge.com/blog)とサイトアドレス (URL https://hoge.com/blog)が一致している状態であれば、元のデザインテンプレートをwordpressの

外観>カスタマイズ(customize.php)

で編集できるのですが、

サイトアドレスを (URL https://hoge.com/)にしている場合は、外観>カスタマイズ(customize.php) では、/(=デフォルトで使っているトップ、index.html)に当然接続されてしまい、外観>カスタマイズ(customize.php)でのレイアウト編集ができません。

どうしたら、前者の状態で編集できていたように、デザインテンプレートをcustomize.phpで編集できますでしょうか?

<追記 2019.11.18>

ーーーーーーーーーーーーーーー
>CHERRY さま
ありがとうございます、

ご指摘の方法を試しました。
まず、

>そのため、 index.html より index.php を優先するように設定する必要があります。

これに関しては、基本的にはindex.htmlという現在のページがあるので、こちらを最優先としております。いわゆる"共存"という形で、あくまでindex.phpはwordpress の編集のためだけに必要なファイルとなります。

なので、そもそもindex.html とindex.php が https://example.com/  に存在するにも関わらず、

・index.html をユーザーには表示させたい。
・index.php は wordpress使用時のcustomize.phpで表示させるためだけの便宜的なファイル


という認識のもとindex.phpを設置しております(リダイレクトで、実際には/wp/以下のwp-blog-header.php を読みに行ってます)。なので、私が行っていること自体が矛盾しているのかもしれません。

そもそもなぜそのような処理をしているかというと、
既存サイトに/wp/をインストールして、自由にディレクトリをつけて運用したいがために、

・WordPress アドレス (URL https://hoge.com/wp)
・サイトアドレス (URL https://hoge.com/wp)


ではなく、

・WordPress アドレス (URL https://hoge.com/wp)
・サイトアドレス (URL https://hoge.com)


とし、ダッシュボード上で編集を行おうと試みているのですが、上記の設定のまま、

外観>カスタマイズ(customize.php

を行おうとすると、index.htmlが読まれてしまい、大元のindex.php(ないしfront-page.phpでもいいのですが)の表示がなされない、というのが質問の意図となります。

したがって、そもそも行っていることが矛盾しているかもしれません。


私が考えるに、customize.phpが実行される際に、front-page.php(もしくはindex.php)を固定アドレスにて内部的に指定してあげれば、表示はこの指示に従うと思うのですが、どうやら、挙動自体は実際のサイトアドレスを内部で取得して行っているようなので、アプローチのしようがなく困っております。

この点、いかがでしょうか?

拙い説明で恐縮ですが、ご教示いただければ幸いです。。

  • 気になる質問をクリップする

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

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

    クリップを取り消します

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

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

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

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

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

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

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

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

    質問の評価を下げる

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

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

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

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

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

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

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

    詳細な説明はこちら

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

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

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

回答 2

0

http://example.com/ のようにファイル名を省略した場合に表示するファイルの順番は、Webサーバーの設定で決められています。

Apache 等の場合、index.html と index.php がある場合は、 

  1. index.html
  2. index.php 

の順に設定されていることが多いようです。


http://example.com/ のような URL で、WordPress の表示を優先させる場合は、http://example.com/ で、アクセスした場合に WordPress の index.php が実行される必要があります。

そのため、 index.html より index.php を優先するように設定する必要があります。

.htaccess 等で、DirectoryIndex を設定して

DirectoryIndex    index.php index.html 


のように index.php を優先するような設定をしてください。

この設定をすることで、 http://example.com/ にアクセスすると index.php が優先されるので、http://example.com/ の URL では、 index.html を表示できなくなります。
index.html を表示するためには、 /index.html とファイル名まで指定する必要があります。

なお、サイトトップ( http://example.com/ )で、WordPress の index 画面ではなく従来使用していた index.html のような独自のページを表示したい場合は、WordPress の中に index.html を置くのではなくて、index.html の内容を元にして、使用中のテーマファイルの中に front-page.php のファイル名で、フロントページ用のテンプレートを作成してそれを表示するようにするのが良いと思います。

投稿

  • 回答の評価を上げる

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

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

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

  • 回答の評価を下げる

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

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

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

  • 2019/11/15 15:08 編集

    ちょっと今時間がないので、追って詳しくいただいた内容を確認させていただきます、
    非常にご丁寧なご回答、大変感謝いたします。

    結構同じ問題に悩む人は多いかと思いますので、大変価値のある回答と存じます。

    キャンセル

  • 2019/11/20 10:08

    ーーーーーーーーーーーーーーー
    >CHERRY さま
    ありがとうございます、

    ご指摘の方法を試しました。
    まず、

    >そのため、 index.html より index.php を優先するように設定する必要があります。

    これに関しては、基本的にはindex.htmlという現在のページがあるので、こちらを最優先としております。いわゆる"共存"という形で、あくまでindex.phpはwordpress の編集のためだけに必要なファイルとなります。

    なので、そもそもindex.html とindex.php が https://example.com/ に存在するにも関わらず、
    ・index.html をユーザーには表示させたい。
    ・index.php は wordpress使用時のcustomize.phpで表示させるためだけの便宜的なファイル

    という認識のもとindex.phpを設置しております(リダイレクトで、実際には/wp/以下のwp-blog-header.php を読みに行ってます)。なので、私が行っていること自体が矛盾しているのかもしれません。

    そもそもなぜそのような処理をしているかというと、
    既存サイトに/wp/をインストールして、自由にディレクトリをつけて運用したいがために、
    ・WordPress アドレス (URL https://hoge.com/wp)
    ・サイトアドレス (URL https://hoge.com/wp)
    ではなく、
    ・WordPress アドレス (URL https://hoge.com/wp)
    ・サイトアドレス (URL https://hoge.com)
    とし、ダッシュボード上で編集を行おうと試みているのですが、上記の設定のまま、

    外観>カスタマイズ(customize.php)

    を行おうとすると、index.htmlが読まれてしまい、大元のindex.php(ないしfront-page.phpでもいいのですが)の表示がなされない、というのが質問の意図となります。

    したがって、そもそも行っていることが矛盾しているかもしれません。

    私が考えるに、customize.phpが実行される際に、front-page.php(もしくはindex.php)を固定アドレスにて内部的に指定してあげれば、表示はこの指示に従うと思うのですが、どうやら、挙動自体は実際のサイトアドレスを内部で取得して行っているようなので、アプローチのしようがなく困っております。

    この点、いかがでしょうか?

    拙い説明で恐縮ですが、ご教示いただければ幸いです。。

    キャンセル

  • 2019/11/21 09:23 編集

    http://example.com/ のように ファイル名を省略して呼び出せるのは、規定された1つのファイル名だけです。
    index.html を優先した場合、http://example.com/ の URL では、 index.php は、実行されません。 http://example.com/index.php のようにファイル名を指定して実行する必要があります。

    WordPressは、すべての動作を index.php が URL を解析して動作を呼び出していますので、 index.php が実行されない場合は、WordPress の動作は、まともに動かないと思います。

    キャンセル

0

・index.php は wordpress使用時のcustomize.phpで表示させるためだけの便宜的なファイル
この解釈が違っています。

Wordpressでは、index.phpへのアクセスをURLを基にroutingを行っています。

例)ドメイン名/321(投稿ID)なら、/?p=321(投稿ID)

CHERRY様のご提案の通り、front-page.phpなどを使用する方が
サーバー設定などを変更せずに済み、簡単だと思います。

index.htmlの内容をfront-page.phpに転記するのでは駄目な理由はありますか?

投稿

編集

  • 回答の評価を上げる

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

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

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

  • 回答の評価を下げる

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

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

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

  • 2019/11/20 11:51 編集

    ご返答ありがとうございます。

    現在index.htmlのページは独立して階層を保有するコーポレートサイトなので、なるべくそちらに影響のなさそうな方法でと思っておりました。

    >index.htmlの内容をfront-page.phpに転記するのでは駄目な理由はありますか?
    ダメな理由はないのですが、私が一番行いたいことは、
    ダッシュボードの管理画面>外観>カスタマイズ から、テンプレートのヘッダーやフッターの設定がしたいということで、

    WordPress アドレス (URL https://hoge.com/wp)
    ・サイトアドレス (URL https://hoge.com)

    この設定である条件のもと、[ダッシュボードの管理画面 >外観 >カスタマイズ ] を選択した場合、index.html(ないし転記したfront-page.php等)が表示されてくると思うのですが、それらはwordpressで作成しておりませんので、、、。編集を(カスタマイズ画面を通して)行いたい、肝心のヘッダーやフッターが動的に表示されず困っている、ということが質問の主題でございます。

    そこはまさにおっしゃるように、
    >、index.phpへのアクセスをURLを基にroutingを行っています。
    と思いますので、サイトアドレス (URL https://hoge.com) を取得して表示しているため、
    編集をしたいヘッダーやフッターを取得したindex.php に繋ごうにも、
    .htaccess およびcannoral.phpにて index.htmlを(動いているコーポレートサイトを表示させ続けるために)優先としておりますので、このroutingだとどうやってもindex.phpを表示させることはできず、。。。

    なので、customize.phpを読む時に指定できればと思ったのですが、上記のrouting の方が上位の優先度の場合には手詰まりですよね。。。

    (同じような問題を抱えた人結構いらっしゃると思うんですが、、諦めるしかないでしょうか。。。)

    ご丁寧に色々とご指摘いただいているのに申し訳ございません。。。

    キャンセル

  • 2019/11/20 13:32

    失礼しました。
    表示の問題ではなく「カスタマイズ」を使用したいのですね。

    動作確認はしておりませんが、どうしてもindex.htmlを使用しなければならないのであれば、
    サーバー環境でindex.htmlでもphpを実行できるのが前提になりますが、

    wp_head()やwp_footer()を読み込んだうえで
    <?php
    define('WP_USE_THEMES', true);
    require('./wp/wp-blog-header.php');

    でWPオブジェクトをindex.htmlに読み込めばどうでしょう。

    index.htmlにこだわりが無ければ
    /wp配下のindex.phpをルートディレクトリへ移動。
    (と、webサーバーがapacheでしたら.htaccessも必要かも知れません)
    front-page.phpを作成、index.htmlを削除して
    WordPressでコントロールするのが一般的だと思います。

    キャンセル

  • 2019/11/21 08:45

    お返事ありがとうございます。

    ご指摘の方法だと通常時のindex.htmlに書き込んでは?とのことで、その通常時のindex.htmlに影響が出そうな感じはしますよね、、。一応コーポレートサイトなので。

    後者の方法は私も試してはみましたが、結局 index.htmlとindex.php が"共存"したうえで、index.htmlは / での検索結果としてのコーポレートトップ、index.phpはあくまでカスタマイズ編集のために使用するために配置するファイル、として挙動させるのは難しそうですね。。。

    ***

    customize.php にて、 routingを 通常の挙動とは別ルートで制御し、強制的に指定のファイル(例えば/wp/hoge.php) をカスタマイズ作業時に表示させるということはどうしてもできそうにないでしょうかね、、、。

    (ダッシュボード内で、いくらルートを wordpressアドレス hoge.com/wp/ を サイトアドレスhoge.com/ などに制御したとしても、結果としてroutingはこれに準じますので、あまり意味がないと個人的には学んではおります…)

    キャンセル

  • 2019/11/21 21:24 編集

    リライトルールを置き換えるWordpressのAPIはあります

    https://wpdocs.osdn.jp/Rewrite_API/add_rewrite_rule

    が、すいません。やられたい事がイメージ出来ません。
    フロントではindex.htmlを表示して、カスタマイズ箇所が別になるのでは
    index.htmlには反映されないのではないでしょうか?

    キャンセル

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

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

関連した質問

同じタグがついた質問を見る