• 解決済 forquestion

    (@forquestion)


    初めまして。質問させていただきます。
    現在、自宅サーバーのドキュメントルート上にWordpressをインストールしていて、http://localhostから、記事および編集画面へのアクセスが正常に行えるようにしてある状態です。
    この状態で、同一LANにつながっているパソコンやスマートフォンからアクセスしようと試みましたが、初期状態ではトップページは表示されるものの、CSSや画像の読み込みが上手く行っておらず、ページの推移もできない状態でした。
    いろいろ試行錯誤してみたところ、こちらのサイトを参考に、各テーマのfunctions.phpを編集して相対パスになるよう設定すると、とりあえず記事画面はCSSや画像の読み込みやページ推移も含め、うまく動作するようになりました。
    http://evm-label.com/2015/04/wordpress_path01/

    しかし、そこからログインしようとすると、画面は表示されるものの、デザインが読み込まれず、ログインもできない状態のままになっていました。
    そのページのソースコードを調べてみると、CSSやスクリプトの読み込みを含め、全てのリンクに「http://localhost/」が残り、相対パスになっていないことがわかりました。
    試しに、ソースコードから手動で「http://localhost/」を消して再度読み込んだところ、デザインも表示され、ログインもできるようになったことから、自動で全てのリンクを相対パスで表記するようにすれば、管理画面も正常に動作するものと考えています。
    そこで質問なのですが、管理画面を含め、全てのリンクから「http://localhost/」を自動で消去し、相対パスとする方法はありますでしょうか。

    参考までに、私の環境はApache 2.4.18、OpenSSL 1.0.2e、PHP 7.0.3、MySQL 5.7、PHPMyAdmin 4.5.4.1、Wordpress 4.4.2で、サーバーのOSはWindows10を使用しています。
    よろしくお願いします。

2件の返信を表示中 - 1 - 2件目 (全2件中)
  • WordPressがCMSであり、データベースに依存している以上、相対パスはあまりおすすめできません。なぜかというと、投稿ページのURLは「実際にそのディレクトリにphpファイルがある」わけではなく、対象となるURLにデータベースの中身を吐き出しているからです。パーマリンクの変更などを行うと、容易にエラーが頻発することが予想できます。
    もっとも端的な解決方法としては、アドレスの記述をget_stylesheet_uri()get_template_directory_uri()を使って記述することです。特にテーマをカスタマイズしたり、自分で作成する場合は上記のコードは必須になるでしょう。
    非常にオススメできかねますが、それでも相対URLに拘る場合は、if(!is_admin())などを用いて管理画面以外に適用するのはいかがでしょうか(試していないので実際に可能かどうかは分かりかねますが…)。

    トピック投稿者 forquestion

    (@forquestion)

    回答ありがとうございました。
    現状では、管理画面以外の通常のコンテンツの表示は相対パスでも可能ですので、管理画面に対しても相対パスを適用して問題を解決できないかと思った次第です。
    ただ、私としては解決策として相対パスにこだわっているわけではありませんので、再度あらゆる可能性を検討してみたいと思います。

2件の返信を表示中 - 1 - 2件目 (全2件中)
  • トピック「管理画面のリンクを全て相対パスにする方法」には新たに返信することはできません。