私の投稿の1つで、 http://www.glumbo.com にリンクしたとします。 Wordpressにリンクのアンカーテキストを自動的にglumbo.comのタイトルに変更してもらいたい。これどうやってするの?
アイデアを楽しませることにしました。私のスニペットから アンカーを折りたたまれたドメイン名 に変更するようにしました。あまりにも冗長すぎませんが、動作するようです。
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おそらく、ディスプレイ上でフィルタリングするのではなく、保存時に投稿を変更するのが理にかなっていると思います。
JQueryを使ってアンカー内のテキストを変更する方法のダウンロード可能な多数の例を示す素晴らしいページを見つけました。それらはWeb 2.0およびWeb 3.0サイトにとって本当に役に立ちます。
http://www.ajaxera.com/jquery-change-text-in-anchor/