web-dev-qa-db-fra.com

Concaténer site_url et string ne fonctionne pas

J'essaie de concaténer mon site_url et une chaîne, mais cela ne fonctionne pas. Voici ce que je fais:

$myurl = site_url();
var_dump($myurl); 

$url = "https" . $myurl . "/inbox/?fepaction=viewmessage&fep_id=" . $inserted_message->ID;

var_dump($url); die;

La sortie ressemble à ceci:

string (31) "//zgp.mydomain.be" string (78) "https:/inbox /? fepaction = viewmessage & fep_id = 4813"

Comme vous pouvez le constater, il n’est pas fusionné. Comment se peut-il?

1
nielsv

Sans savoir exactement ce que vous essayez de faire, il semble que vous souhaitiez ajouter des variables de requête à l'URL. WordPress a des méthodes pour gérer cela correctement, sans concaténation manuelle de chaînes.

Consultez la documentation de add_query_arg() pour plus de détails: https://developer.wordpress.org/reference/functions/add_query_arg/

Vous pouvez reconstruire l'URL et ajouter des variables de requête à la requête d'URL en utilisant cette fonction. Il y a deux façons d'utiliser cette fonction. soit une clé unique et une valeur, ou un tableau associatif.

En utilisant une seule clé et valeur:

add_query_arg( 'key', 'value', 'http://example.com' );

Créerait http://example.com/?key=value

Utiliser un tableau associatif:

add_query_arg( array(
    'key1' => 'value1',
    'key2' => 'value2',
), 'http://example.com' );

Cela créerait http://example.com/?key1=value1&key2=value2

1
jdm2112

Ce que vous recherchez est home_url() .

Cela renverra l'adresse du site et non le chemin de votre installation WP.

0
helle

Parfois, les solutions les plus faciles sont les meilleures ...

Jetez un coup d'oeil à _ RÉFÉRENCEsite_url .

Il faut deux paramètres:

$ chemin (chaîne) (facultatif) Chemin à ajouter à l'URL du site. Par défaut: aucun

$ scheme (chaîne) (facultatif) Contexte pour le protocole de l'URL renvoyée. Définir $ scheme remplacera le contexte par défaut. Les valeurs autorisées sont 'http', 'https', 'login', 'login_post', 'admin' ou 'relatif'. Par défaut: null

Comme vous pouvez le constater, vous n'avez pas besoin de tout ce code ...

Vous pouvez simplement utiliser:

$url = site_url('/inbox/?fepaction=viewmessage&fep_id=' . esc_url($inserted_message->ID), 'https');
0
Krzysiek Dróżdż