フィード

の記事

  • Feedにアイキャッチ画像を追加

    以前フィードに画像を追加する方法として、フィードテンプレートを上書きする方法をメモしていた。画像を追加するだけなら、もっと簡単な方法があった。

    [PHP]
    function my_thumbnail_feeds($content) {
    global $post;
    if(has_post_thumbnail($post->ID)) {
    $content = ‘

    ‘ . get_the_post_thumbnail($post->ID, array(150,150)) . ‘

    ‘ . $content;
    }
    return $content;
    }
    add_filter(‘the_excerpt_rss’, ‘my_thumbnail_feeds’);
    add_filter(‘the_content_feed’, ‘my_thumbnail_feeds’);
    [/PHP]

    なるほど、フィード用にもフィルタがあったんだ!

  • ブラウザにフィードアイコンを表示するには

    feedブラウザ(FireFoxであればアドレスバーの右端)にフィードアイコンを表示するにはHTMLの<head>内に<link rel=”alternate”…>でフィードのURLを指定する。
    WordPressの場合もちろん同様でもよいが、function.phpでautomatic_feed_links();を呼ぶと、自動的に<head>内に<link rel=”alternate”…>が挿入される。

    WordPress3.0のデフォルトデーマを見ると、この部分は”after_setup_theme”という新しいフックを利用している。

    [sourcecode language=’php’]
    function my_theme_setup() {
    add_theme_support( ‘automatic-feed-links’ );
    }
    add_action( ‘after_setup_theme’, ‘my_theme_setup’ );
    [/sourcecode]

  • Feedをカスタマイズ

    WordPressが自動で出力してくれるFeedは、全文か抜粋かを選ぶだけのシンプルなものとなっている。当ブログではこれで十分であるが、フォトログだったらやはりFeedに画像なんかを表示したいものだ。いろいろ調べているうちに、Feedの内容はテーマやプラグインでカスタマイズできることが分かった。

    以下はテーマでatomの出力内容を変更する例。

    [sourcecode language=’php’]
    remove_action(‘do_feed_atom’, ‘do_feed_atom’, 10, 1);
    automatic_feed_links(false);

    function custom_feed_atom( $for_comments ) {
    $template_file = ‘/feed-atom’ . ( $for_comments ? ‘-comments’ : ” ) . ‘.php’;
    $template_file = ( file_exists( get_template_directory() . $template_file )
    ? get_template_directory()
    : ABSPATH . WPINC
    ) . $template_file;
    load_template( $template_file );
    }
    add_action(‘do_feed_atom’, ‘custom_feed_atom’, 10, 1);

    [/sourcecode]

    まずfunctions.phpで、本来のatom出力である”do_feed_atom”をremove_actionで停止し、独自の関数をadd_actionで再定義する。
    次に、/wp-includes/feed-atom.phpを同じファイル名のままテーマフォルダにコピーする。中身を見るとFeedを出力するテンプレートとなっている。Feedの本文はthe_excerpt_rss();前後になるので、このあたりに画像を表示するなり手を加えるとよい。
    さらに、同じ処理をrdf、rss、rss2に関しても行う。