私は site_url と文字列を連結しようとしていますが、うまくいきません。これは私がやっていることです:
$myurl = site_url();
var_dump($myurl);
$url = "https" . $myurl . "/inbox/?fepaction=viewmessage&fep_id=" . $inserted_message->ID;
var_dump($url); die;
出力は次のようになります。
string(31) "//zgp.mydomain.be" string(78) "https:/ inbox /?fepaction = viewmessage&fep_id = 4813"
ご覧のとおり、マージされていません。どうすればいいの?
何をしようとしているのか正確にはわからないが、URLにクエリ変数を追加したいようです。 WordPressには、手動による文字列連結なしで、それを適切に処理するためのメソッドがあります。
詳しくはadd_query_arg()
のドキュメントを見てください: https://developer.wordpress.org/reference/functions/add_query_arg/
この関数を使用して、URLを再構築し、クエリ変数をURLクエリに追加できます。この機能を使用する方法は2つあります。単一のキーと値、または連想配列。
単一のキーと値を使用する:
add_query_arg( 'key', 'value', 'http://example.com' );
http://example.com/?key=value
を作成します
連想配列を使う:
add_query_arg( array(
'key1' => 'value1',
'key2' => 'value2',
), 'http://example.com' );
これはhttp://example.com/?key1=value1&key2=value2
を作成するでしょう
あなたが探しているのは home_url()
です。
これにより、WPインストールへのパスではなく、サイトのアドレスが返されます。
時には最も簡単な解決策が最善です...
site_url
reference をご覧ください。
2つのパラメータが必要です。
$ path (文字列)(オプション)サイトのURLに追加するパス。デフォルト:なし
$ scheme (文字列)(オプション)返されたURLのプロトコルのコンテキスト。 $ schemeを設定すると、デフォルトのコンテキストが上書きされます。許容値は、 'http'、 'https'、 'login'、 'login_post'、 'admin'、または 'relative'です。デフォルト:null
ご覧のとおり、そのようなコードはすべて必要ありません。
あなたは単に使用することができます:
$url = site_url('/inbox/?fepaction=viewmessage&fep_id=' . esc_url($inserted_message->ID), 'https');