web-dev-qa-db-ja.com

カスタムを参照するための動的URL PHP ファイル

ここで初心者のWordpress開発者...私は現在私の装置のためにWordpressのサイトを開発しています。私の考えは、Webサーバーとして機能するデバイスに接続できるようにすることです。私は、サイトをホストしているローカルデバイス(これ以降Raspberry Piはサーバーとして参照されます)からも、サーバーと同じネットワークに接続されている任意のマシン/デバイス(携帯電話/ラップトップなど)からもアクセスできるはずです。ここではクライアントとして参照されます。

サーバーに直接接続してサイトに接続すると、http:// localhost/mysiteで正常に接続されます。すべてのリンクとアクションは予想どおりに機能します。

クライアントからサイトへの接続は部分的に機能します。私はページなどのようなワードプレスのリンクを接続して閲覧することができますが、以下のプロセスはうまくいきません。

プロセス

私のプラグインは私が任意のページに追加できるショートコードを作成します。ショートコードのすべての機能は、基本的に次のコードでphpファイルを呼び出します。

http://localhost/mysite/wp-content/plugins/my-plugin/api/mydatasourcephpfile.php

次に、上記のリクエストから取得した値を使用してページ上にHTMLフォームを作成します。フォームには送信ボタンが含まれており、クリックするとフォームに値がポストされます。

http://localhost/mysite/wp-content/plugins/my-plugin/api/mypostphpfile.php

それから、mypostphpfileはそれにポストされたフォーム値を取り、それをデータベースに書き込み、そして "?success = true"のurlパラメータを追加して元のページに戻ります。これは、mypostphpfile.phpファイルで、すべてのデータが書き込まれた直後に次のコードを使用して行われます。

$success="true";
header('Location: http://localhost/mysite/myoriginalformpage/?success=', $success);

私はその問題が何であるかを正確に知っています。問題は私のURLのlocalhostで、私はこれを "hardcoded"と言い、投稿したり戻ったりしています。サーバー上で投稿を実行すると、(サーバーのコンテキストで)ローカルホスト上で利用可能なlocalhost phpファイルに投稿されます。クライアントから投稿するときは、クライアントブラウザがサーバーではなくクライアントコンピュータで探しているlocalhost phpファイルに投稿しているため、投稿は機能しません。

URLの問題のようです。私は.htaccessファイルなどにあまり馴染みがなく、それが私の問題の解決策になるかどうかさえわかりません。どのデバイスからサイトを閲覧しているかに関係なく、URLがサーバーを基準にしている場所でphpファイルに投稿できる必要があります。私はWordpressの開発にはとても慣れていませんし、インターネット上での検索はあまり意味がありません(質問の説明でわかるように)Google検索バーで問題を説明する方法さえわからないので。私はこれらが(少なくともラズベリーパイでは)うまく動かないと読んだのでホスト名と同様にこれらが変わることができるので私はハードコーディングipアドレスを避けたいと思います。

一言で言えば、私はすべてのクライアントがプロセスを終了できるようにするために私がどのURL wordpressが実行されているのかを拾うことができる方法があります。 phpファイルへのURLはサーバーからの相対パスでなければなりません。

これに関するどんな助けでも正しい方向に私を向けることは大いに認められるでしょう。

3

私はその質問を理解していますが、サイトURLを取得しようとしているのであれば、get_site_url() WP関数を使用できます。だから、このように:

$siteURL = get_site_url();
header("=Location: $siteURL" . "/myoriginalformpage/?success=", $success);

また、get_site_url()のパラメータを変更してパスを指定し、「https」または「http」を表示することもできます。

ただし、現在のサイトのURLが必要な場合はget_site_url();を使用してください。

3
Coltvant