Tiny birds in my hand.. Photo by ~Ilse
何かとお騒がせなTwitter利用規約の変更に伴い、@AnywhereがDeveloper Display Requirementの表示ルールから外れるため終了となるようです。WordPressには”Twitter @Anywhere Plus”というプラグインがありますが、こちらも自動的に終了してしまいます。
ちょうどサイトを軽くするためにプラグインをガシガシ消していたところなので終了を待たずに外すとこにしました。
ただ、過去のエントリに埋め込んだTweitterアカウントにリンクを付け直すのも大変な作業ですし、今後もエントリーに記載する際、一手間増えることになります。と思い悩んでいたところに魔法の呪文がありました。
エントリー内にTwitterアカウントを検知したらリンクタグを自動で生成するというスクリプトをWordPressのテーマにあるfunctions.phpへ追記するだけです。ありがたや、ありがたや。
WordPressのfunctions.php 修正方法
PCで作業すればアッという間ですが、iPhoneだけでも簡単にできました。
Twitter @Anywhere plusプラグインは停止または削除してから作業を始めるか、作業後にプラグインを停止または削除してください。
WordPressアプリを起動し、サイドメニューからダッシュボードを選択します。
左側のアイコンメニューから外観を選択してテーマ編集を選びます。
右にスクロールさせてテンプレートからテーマのための関数(functions.php)を選択。
テキストエリアの一番下に次のスクリプトをコピペして保存します。これで完了です。
1 2 3 4 5 6 7 8 9 |
//////// twitter acct auto-link generator - "twitter @anywhere plus" base function add_twitter_link($content) { $pattern= '/(?<=^|(?<=[^a-zA-Z0-9-_\.]))@([A-Za-z]+[A-Za-z0-9_]+)/i'; $replace= '@<a href="http://www.twitter.com/$1">$1</a>'; $content= preg_replace($pattern, $replace, $content); return $content; } add_filter( "the_content", "add_twitter_link" ); |
このスクリプトは @kachibito さんのスクリプトに若干アレンジを加えて、httpをhttpsに変更、ページを新しいタブで開くようにtarget=”_blank”を追記しています。
なお、プラグインで対応していた、アカウント名にマウスカーソルを合わせた時にポップアップでアカウント情報が表示される「Hovercards」機能は再現できません。
でも、これで今後のエントリーはこれまで通り、アカウント名だけでOKですし、過去のエントリーに記載したTwitterアカウントもそのままで自動でリンクタグを生成して表示しますので十分過ぎます。@kachibito さんに感謝、感謝です。
同じ悩みを抱えてる方は是非お試しを。
Tips
この方法だと”@”以降の文字列をTwitterアカウントと誤認する場合もあります(メールアドレスは対応済み)が、その場合はISO数値コード”@”を使って表記すると回避できます。
子テーマを利用している場合
WordPressのテーマをカスタマイズする場合には子テーマを使うのが正しい方法です。子テーマについては以下のサイト等が参考になります。子テーマを有効化してから作業に入ります。
子テーマのstyle.cssを保存しているのと同じディレクトリにfunctions.phpを保存します。functions.phpは、style.cssの挙動(親テーマのオーバーライド)と違って、親テーマの直前にロードされますので留意してください。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
<?php //////// twitter acct auto-link generator - "twitter @anywhere plus" base function add_twitter_link($content) { $pattern= '/(?<=^|(?<=[^a-zA-Z0-9-_\.]))@([A-Za-z]+[A-Za-z0-9_]+)/i'; $replace= '@<a href="https://www.twitter.com/$1" target="_blank">$1</a>'; $content= preg_replace($pattern, $replace, $content); return $content; } add_filter( "the_content", "add_twitter_link" ); ?> |
もし、子テーマで失敗しても削除すれば親テーマは残ります(リスクを最小化)。
WPtouchのfunctions.phpを修正するとスマホ用サイトも適用可能[2012年11月27日追記]
スマートフォン用サイトを簡単に作成するプラグイン”WPtouch”のfunctions.phpに追記すると同じように適用できます。下図のように自動的にリンクが生成されるようになります。
ただし、WPtouchは子テーマの仕組みがないのでバックアップは必須です。失敗した場合はFTPソフトウェアなどでバックアップファイルと差し替えれば元に戻ります。