2010/8/8

WordPressでthe_contentとthe_excerptにadd_filterしたんだけれども

長らく、WordPressをアップグレードするたびにfeed-rss2.phpにFlickrの画像の読み込みコードを追記し直すという作業に四苦八苦しておったのですが、このたびadd_filterでthe_contentとthe_excerptに追加しちゃえば良いということに気付きました。ですが、これがクセモノでした。

function getFlickrContent($content) {
$id = get_the_id();
$flickr = get_post_meta($id,’Flickr’,TRUE);
if ((!empty($flickr)) && (!is_home())) {
echo ‘<p><img src="’.$flickr.’_b.jpg" /></p>’;
}
return $content;
}
add_action(‘the_content’, ‘getFlickrContent’);

function getFlickrExcerpt($excerpt) {
$id = get_the_id();
$flickr = get_post_meta($id,’Flickr’,TRUE);
if ((!empty($flickr)) && (is_home())) {
echo ‘<a href="’;
the_permalink();
echo ‘"><img src="’.$flickr.’_t.jpg" class="imagel" /></a>’;
}
return $excerpt;
}
add_action(‘the_excerpt’, ‘getFlickrExcerpt’);

何が問題かというと、それぞれ元のデータから、$contentと$excerptが生成されるんじゃなくて、まず$contentがあって、それを整形して$excerptが生成されるという段階を踏んでいるようなんですね。というわけで、普通にやるとthe_excerptにはFlickrの大きい画像と小さい画像、両方読み込まれてしまうと。そこで、今回のデザインではトップページでしかthe_excerptを使っていないので、トップページであるかどうかを判別する処理を付け加えて解消。 the_content_feedも$contentをベースに生成されてるっぽいので、上の書き方でthe_contentと同じアクションがthe_content_feedに追加されます。なんかもう少し普遍的な方法もありそうですが。。。

とりあえずこれで今後は躊躇せずWordPressのアップグレードが行えるので一安心です。

ひとり仕事: フリーランスという働き方
(2012-10-5)
売り上げランキング: 14,705
100円
WordPressデザインレシピ集
狩野 祐東
技術評論社
売り上げランキング: 197,569
WordPress 高速化&スマート運用必携ガイド
こもりまさあき 岡本渉
エムディエヌコーポレーション
売り上げランキング: 435,263

加藤 康祐 / 企画・設計

1980年1月12日生まれ。フリーランス歴15年。プランナー、デザイナー。加藤康祐企画設計代表。学生時代にデザイン会社でWebデザインを経験。2005年よりフリーランスとしてキャリアスタート。これまでに個人から上場企業まで、100以上のクライアントとのプロジェクトを経験。主な仕事としてベンチャー企業でのサービスのUXデザイン、独法との防災メディアの編集・運営、社会的養護の子どもたちの自立を支援するNPOのサポート等。趣味はラグビーと料理。Keep the head up, Bind tight & Stay low.

加藤康祐企画設計

是非、フォローしてください!
Twitter / Instagram