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
売り上げランキング: 14,705
100円
フリーランスとして働き始めるってどういうことだったのか?フリーランスとして働くってどういうことなのか?フリーランスが目指すことってなんなのか?5年間の自分の経験から書きました。(2010年執筆)