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のアップグレードが行えるので一安心です。

加藤 康祐 / 企画・設計

プランナー、デザイナー。加藤康祐企画設計代表。Webデザインを入り口に、2005年よりフリーランスとしてのキャリアスタート。主な仕事としてベンチャー企業でのサービスのUXデザイン、独法との防災メディアの運営、社会的養護の子どもたちの自立を支援するNPOのサポート。ラグビーと料理、最近イラスト。

加藤康祐企画設計

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

(2012-10-5)
売り上げランキング: 14,705
100円