0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

【WordPress】文章(コンテンツ)中のURLを自動的にリンク(aタグ)にしよう!

Posted at

TL;DR

//$strの中のhtmlタグに設定されていないURLをリンク化する関数
function convert_string_url_to_link($str){
  $ptn = '/([^"])(https?:\/\/[-A-Z0-9+&@#\/%?=~_|!:,.;]*[-A-Z0-9+&@#\/%=~_|])([^"])/imu';
  $rep = '$1<a href="$2" target="_blank" rel="nofollow">$2</a>$3';
  $result = preg_replace($ptn, $rep, $str, -1);
  if($result == null) return $str;
  return $result;
}
//上記関数をthe_contenのfilterに設定
add_filter('the_content', 'convert_string_url_to_link');

特にエラー処理とかはしてないので、必要に応じて編集してください。

この記事を書いた理由

クライアントさんから「URLが勝手にリンクになったらいいなー」のお声。
エディタ側でリンクにしてください。で一蹴しないのが弊社のホスピタリティ。

コードの説明

まずは文章中のURLをaタグで囲む関数を作りましょう。
URLは正規表現で取得し、置換取得したURLを置換してaタグ内に入れるようにします。
今回、大体は外部リンクになるかなーって思ったので、とりあえず外部リンクにになるようにtarget属性も設定しました。

後は、the_contentのフィルターとして設定すれば完了です。

蛇足

関数化することで、単体でも利用可能なので、カスタムフィールドに入力された文章中のURLも変換できます。

$str = get_field('hoge');
echo convert_string_url_to_link($str);
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?