web-dev-qa-db-ja.com

Site_urlと文字列の連結が機能しない

私は 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"

ご覧のとおり、マージされていません。どうすればいいの?

1
nielsv

何をしようとしているのか正確にはわからないが、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を作成するでしょう

1
jdm2112

あなたが探しているのは home_url() です。

これにより、WPインストールへのパスではなく、サイトのアドレスが返されます。

0
helle

時には最も簡単な解決策が最善です...

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');
0