🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
WordPress

WordPressは、PHPで開発されているオープンソースのブログソフトウェアです。データベース管理システムにはMySQLを用いています。フリーのブログソフトウェアの中では最も人気が高く、PHPとHTMLを使って簡単にテンプレートをカスタマイズすることができます。

Q&A

2回答

2121閲覧

wordpress customize.phpでの不具合

kaz1214

総合スコア5

WordPress

WordPressは、PHPで開発されているオープンソースのブログソフトウェアです。データベース管理システムにはMySQLを用いています。フリーのブログソフトウェアの中では最も人気が高く、PHPとHTMLを使って簡単にテンプレートをカスタマイズすることができます。

0グッド

0クリップ

投稿2019/11/13 10:59

編集2019/11/20 01:11

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)を固定アドレスにて内部的に指定してあげれば、表示はこの指示に従うと思うのですが、どうやら、挙動自体は実際のサイトアドレスを内部で取得して行っているようなので、アプローチのしようがなく困っております。

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

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

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

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

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

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

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 01:26

編集2019/11/20 01:29
madone99

総合スコア1857

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

kaz1214

2019/11/20 02:53 編集

ご返答ありがとうございます。 現在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 の方が上位の優先度の場合には手詰まりですよね。。。 (同じような問題を抱えた人結構いらっしゃると思うんですが、、諦めるしかないでしょうか。。。) ご丁寧に色々とご指摘いただいているのに申し訳ございません。。。
madone99

2019/11/20 04: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でコントロールするのが一般的だと思います。
kaz1214

2019/11/20 23: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はこれに準じますので、あまり意味がないと個人的には学んではおります…)
madone99

2019/11/21 12:59 編集

リライトルールを置き換えるWordpressのAPIはあります https://wpdocs.osdn.jp/Rewrite_API/add_rewrite_rule が、すいません。やられたい事がイメージ出来ません。 フロントではindex.htmlを表示して、カスタマイズ箇所が別になるのでは index.htmlには反映されないのではないでしょうか?
guest

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 05:51

CHERRY

総合スコア25218

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

kaz1214

2019/11/15 06:08 編集

ちょっと今時間がないので、追って詳しくいただいた内容を確認させていただきます、 非常にご丁寧なご回答、大変感謝いたします。 結構同じ問題に悩む人は多いかと思いますので、大変価値のある回答と存じます。
kaz1214

2019/11/20 01: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)を固定アドレスにて内部的に指定してあげれば、表示はこの指示に従うと思うのですが、どうやら、挙動自体は実際のサイトアドレスを内部で取得して行っているようなので、アプローチのしようがなく困っております。 この点、いかがでしょうか? 拙い説明で恐縮ですが、ご教示いただければ幸いです。。
CHERRY

2019/11/21 00: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 の動作は、まともに動かないと思います。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.36%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問