web-dev-qa-db-fra.com

Est-il possible de coller un lien sans balises et d'en faire directement un lien dans un message?

Ainsi, par exemple: si je poste http://testeteststetetst.com , cela ne fera pas un lien s'il s'agit d'un message. Si c'est un commentaire, cela en fait un lien ... Maintenant, je le veux aussi pour les publications. Est-ce possible, si oui, comment? Quelqu'un peut m'aider avec ça s'il vous plaît?

1
Johan

J'utilise une méthode similaire à la suivante dans un de mes plugins:

function wpse107488_urls_to_links( $string ) {
    /* make sure there is an http:// on all URLs */
    $string = preg_replace( "/([^\w\/])(www\.[a-z0-9\-]+\.[a-z0-9\-]+)/i", "$1http://$2", $string );
    /* create links */
    $string = preg_replace( "/([\w]+:\/\/[\w-?&;%#~=\.\/\@]+[\w\/])/i", "<a target=\"_blank\" title=\"" . __( 'Visit Site', 'your-textdomain' ) . "\" href=\"$1\">$1</a>", $string);

    return $string;
}

Je ne l'utilise pas pour le contenu d'un message, mais cela devrait fonctionner ici.
Pour cela, vous devez utiliser le filtre the_content :

add_filter( 'the_content', 'wpse107488_urls_to_links' );

Notes de bas de page:
Ceci n’a pas été testé.
Les expressions rationnelles sont assez bonnes, mais elles échoueront dans des cas de niche de temps en temps. Identifier une URL uniquement par format, tout en évitant les faux positifs n'est pas la plus simple des choses.

0
Johannes Pille