web-dev-qa-db-ja.com

自動的に目的地のタイトルにURLのアンカーテキストを変更するためのプラグイン?

私の投稿の1つで、 http://www.glumbo.com にリンクしたとします。 Wordpressにリンクのアンカーテキストを自動的にglumbo.comのタイトルに変更してもらいたい。これどうやってするの?

1
Matthew Hui

アイデアを楽しませることにしました。私のスニペットから アンカーを折りたたまれたドメイン名 に変更するようにしました。あまりにも冗長すぎませんが、動作するようです。

add_filter( 'the_content', 'anchors_to_page_titles' );

function anchors_to_page_titles( $content ) {

    preg_match_all( '/<a.*?href="(.*?)".*?>(.*?)<\/a>/', $content, $matches );
    array_shift( $matches );

    foreach( $matches[0] as $key => $url ) {

    $anchor = $matches[1][$key];

    if( $url == $anchor ) {

        $transient_key = 'page_title_'.md5($url);
        $anchor = get_transient($transient_key);

        if( !$anchor ) {

            $response = wp_remote_request($url);
            $body = wp_remote_retrieve_body($response);
            $pattern = '/title>(.*?)</';
            $title = array();
            preg_match( $pattern, $body, $title);

            if( !empty( $title ) ) {

                $title = $title[1];
                $anchor = $title;
                set_transient( $transient_key, $anchor, 60*60*24 );
            }
            else {
                $anchor = $url;
                set_transient( $transient_key, $anchor, 60*60 );
            }
        }

        $content = str_replace( ">{$url}</a>", ">{$anchor}</a>", $content );
    }

    }

    return $content;
}

PSおそらく、ディスプレイ上でフィルタリングするのではなく、保存時に投稿を変更するのが理にかなっていると思います。

6
Rarst

JQueryを使ってアンカー内のテキストを変更する方法のダウンロード可能な多数の例を示す素晴らしいページを見つけました。それらはWeb 2.0およびWeb 3.0サイトにとって本当に役に立ちます。

http://www.ajaxera.com/jquery-change-text-in-anchor/

0
user3112