web-dev-qa-db-ja.com

タグなしでリンクを貼り付けて、投稿内のリンクに直接することは可能ですか?

だから例えば:私は http://testeteststetetst.com を投稿した場合、それが投稿であればそれはリンクにはなりません。それがコメントなら、それはリンクになります...今、私は投稿にもそれが欲しいです。もしそうなら、これは可能ですか?誰かが私を助けてくれませんか。

1
Johan

私のプラグインでは、次のような方法を使います。

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;
}

投稿コンテンツには使用しませんが、そこで機能するはずです。
そのためには、 the_contentフィルタ を使用する必要があります。

add_filter( 'the_content', 'wpse107488_urls_to_links' );

傍注:
これはテストされていません。
正規表現はかなり優れていますが、時々ニッチなケースでは失敗します。フォーマットのみでURLを識別する一方で、誤検知を回避することは最も簡単なことではありません。

0
Johannes Pille