[WordPress] Twitter Cards に対応させるプラグイン「Twitter Cards Meta」
Twitter の Web サイトや公式クライアントで URL を含むツイートを見るとサムネイルなどが表示されるツイートがあると思います。この機能は、Twitter Cards と呼びます。Twitter Cards は、特定の meta タグを対象のページに含め、Twitter 社に許可されるとツイートで表示されるようになります。
HSP スクリプトエディタにプロ生ちゃん登場! | プログラミング生放送 http://t.co/PmoDAUg7li
— プロ生ちゃん(暮井 慧)🍍 (@pronama) February 1, 2015
昨年からこのサイトも対応していたのですが([WordPress] Twitter Cards 対応しました)、最近 きちんと概要が表示されていないことに気付き、プラグインを修正したのでメモしておきます(以前もプラグインを修正し、プラグインのアップデートにより、また修正が元に戻っていたのが原因でした)。
Twitter Cards Meta
現在、当サイトで利用している WordPress プラグインは、Twitter Cards Meta 。修正不要のもっと良いプラグインがあるかもしれません。
オプションは次の通り。
Twitter Cards ではよく利用される Summary type と Photo type の Twitter Cards に対応し、表示するサムネイルは、アイキャッチ画像や記事中に出てくる最初の画像の指定などができます。
コードの修正
有効にした後、各投稿ページの meta タグを確認してください。「<meta name="twitter:description" content="…" />」部分の説明が正しく設定されていれば問題ありません。うまく本文を取得できていない場合は、twitter-cards-meta.php の twcm_get_description 関数を修正します。
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
function twcm_get_description() | |
{ | |
global $post; | |
$twcm_options=twcm_get_options(); | |
//$desc=trim(get_the_excerpt()); | |
//if($desc=="") | |
//{ | |
//$desc=$post->post_content; | |
$desc=strip_shortcodes( $post->post_content ); #avoid shortcode content | |
//$desc=apply_filters('the_content',$post->post_content);#using this method to keep shortcode gentrated texts. | |
//$desc=get_the_content(); | |
//} | |
$desc=strip_tags( $desc ); | |
//$desc=wp_filter_nohtml_kses( $desc ); #smililar with strip_tags() function | |
$desc=esc_attr($desc); | |
//$desc = trim(preg_replace("/\s+/", " ", $desc)); #to maintain a space between words in description. Since version 1.1.2 | |
$desc=twcm_sub_string($desc, 200); | |
return $desc; | |
} |
いくつかの行をコメントアウトしています。get_the_excerpt() では、本文が取得できないため、実行しないよう変更。また、$desc = trim(preg_replace… の行も、日本語を正しく処理できないのでコメントアウトします。
ツイートがどのように表示されるかは、Twitter の開発者向けページ、Card Validator を利用して、確認できます。