色々紆余曲折 (詳細は後日記事にします) あって少し時間が空いてしまいましたが、
今回は、フィードリンク を追加してみます。
フィードリンクって何?てな方のために
WordPress Feeds – WordPress Codex 日本語版
から抜粋します。
新規コンテンツを自動的に探し出し、その情報を別のサイトに
投稿し更新できるようにする特別なソフトウェア機能です。
この機能により、ユーザーは異なるブログに投稿された最新の
ホットな情報を得ることができます。
フィードには何種類かあり、異なるフィードリーダーによって読み込みされます。
フィードには、RSS (“Rich Site Summary” あるいは “Really Simple Syndication”
とも定義される)、Atom および RDF ファイルがあります。
(中略)
上の4つのフィードは、それぞれのフィードリーダー向けに、
あなたのサイトのコンテンツの更新情報を表示します。
要するに、RSS や Atom、RDF に代表される、
ブログの更新情報を配信するための仕掛けと理解していいかと思います。
検索エンジン (SEO) 対策として導入したい場合が多いのではないかと
思います。
はい、本題に入ります。
function.php に (投稿とコメントの) RSSフィードのリンクを有効にする
コードを追加します。
//--- フィードリンク追加 add_theme_support('automatic-feed-links');
テーマの機能を設定する add_theme_support 関数の
第一パラメータに ‘automatic-feed-links’ を指定して、
フィードリンクを有効にします。
( 詳細は WordPress Codex 日本語版:関数リファレンス/add theme support #フィードリンク 参照 )
これで、RSSフィードの URL を head 内に自動的に出力してくれるようになります。
簡単ですね。
こんな簡単なコードでどうやって RSSフィードの URL が出力されるのかと言うと、
WordPress 本体の内部処理 (以下に記載のソースコードは WordPress 3.9) で
1. wp_head アクション実行時に feed_links 関数が実行されるようフック (されている)
// Actions add_action( 'wp_head', 'wp_enqueue_scripts', 1 ); add_action( 'wp_head', 'feed_links', 2 ); add_action( 'wp_head', 'feed_links_extra', 3 ); add_action( 'wp_head', 'rsd_link' ); add_action( 'wp_head', 'wlwmanifest_link' ); add_action( 'wp_head', 'adjacent_posts_rel_link_wp_head', 10, 0 ); add_action( 'wp_head', 'locale_stylesheet' ); add_action( 'publish_future_post', 'check_and_publish_future_post', 10, 1 ); add_action( 'wp_head', 'noindex', 1 ); add_action( 'wp_head', 'wp_print_styles', 8 ); add_action( 'wp_head', 'wp_print_head_scripts', 9 ); add_action( 'wp_head', 'wp_generator' ); add_action( 'wp_head', 'rel_canonical' ); add_action( 'wp_footer', 'wp_print_footer_scripts', 20 ); add_action( 'wp_head', 'wp_shortlink_wp_head', 10, 0 ); add_action( 'template_redirect', 'wp_shortlink_header', 11, 0 ); add_action( 'wp_print_footer_scripts', '_wp_footer_scripts' ); add_action( 'init', 'check_theme_switched', 99 ); add_action( 'after_switch_theme', '_wp_sidebars_changed' );
2. wp_head 関数実行時に wp_head アクションを実行する
/** * Fire the wp_head action * * @since 1.2.0 */ function wp_head() { /** * Print scripts or data in the head tag on the front end. * * @since 1.5.0 */ do_action( 'wp_head' ); }
3. wp_head アクションから フックされている feed_links 関数が実行される
/** * Display the links to the general feeds. * * @since 2.8.0 * * @param array $args Optional arguments. */ function feed_links( $args = array() ) { if ( !current_theme_supports('automatic-feed-links') ) return; $defaults = array( /* translators: Separator between blog name and feed type in feed links */ 'separator' => _x('»', 'feed link'), /* translators: 1: blog title, 2: separator (raquo) */ 'feedtitle' => __('%1$s %2$s Feed'), /* translators: 1: blog title, 2: separator (raquo) */ 'comstitle' => __('%1$s %2$s Comments Feed'), ); $args = wp_parse_args( $args, $defaults ); echo '\n"; echo '\n"; }
4. automatic-feed-links がサポートされていれば、フィード URL の link 要素を出力
如何でしょうか?
今回は機能の組み込みに関するコードがあまりにも少なかったので (笑)
WordPress 本体が動作する部分まで突っ込んで解説してみました。
こうやって追っかけていくと、WordPress が動く仕掛けが何となくでも見えてきますね。
ではまた次回・・・