Essayer de vérifier si $link
a http://
devant ou non. Si quelqu'un met www.google.com
dans le champ du lien, il agit comme un lien dans le site WordPress, c'est-à-dire: www.website.com/www.google.com
.
$link = get_field('advertisement_link');
$ad_code = '<a href="'.$link.'" target="_blank">Test</a>';
Exemple de code ci-dessus, je travaille avec. Ceci est également une question générale PHP. Comment puis-je le faire de la bonne façon? Essayé ci-dessous, remplace the_content()
par le $link
.
$link = get_field('advertisement_link');
if(strpos($link, 'http://') !== 0) {
return 'http://' . $link;
} else {
return $link;
}
$ad_code = '<a href="'.$link.'" target="_blank">Test</a>';
Edit: Je dois garder $ad_code
car je l’utilise dans return prefix_insert_after_paragraph( $ad_code, 3, $content );
pour insérer cette annonce dans un message tous les 3 paragraphes.
Vous ne devez pas return
la valeur, mais modifier le varialbe $link
if(strpos($link, 'http://') !== 0) {
$link = 'http://' . $link;
} //no else needed
Sachez que si votre lien commence par https://
, il précédera également le http://
et donnera http://https://example.com
.
La meilleure façon de le faire serait de ici , ajusté à vos besoins:
Dans functions.php
:
function addhttp($url) {
if (!preg_match("~^(?:f|ht)tps?://~i", $url)) {
$url = "http://" . $url;
}
return $url;
}
Code pour vous:
$link = addhttp( get_field('advertisement_link') );
$ad_code = '<a href="'.$link.'" target="_blank">Test</a>';
Je suppose que ceci est un doublon possible de - ou du moins similaire à " Vérification si la chaîne contient HTTP: // " sur stackoverflow - mais quand même: Tout d'abord, au lieu de rechercher "0", vous devez rechercher "faux" . Et ensuite, vous devriez également vérifier "https: //". Je ferais probablement quelque chose comme ça:
if (substr($link, 0, 7) == 'http://') {
// do nothing
} elseif (substr($link, 0, 8) == 'https://') {
// do nothing
} else {
$link = 'http://'.$link;
}
(Je suis conscient qu'il y a des manières plus élégantes d'écrire ceci)