記事一覧

フィードリンクを追加する

 posted by suzu
テンプレート作成のススメ

色々紆余曲折 (詳細は後日記事にします) あって少し時間が空いてしまいましたが、
今回は、フィードリンク を追加してみます。

フィードリンクって何?てな方のために
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 が動く仕掛けが何となくでも見えてきますね。
ではまた次回・・・

関連記事

eyecatch_template

HTMLをデザインする [カラム]

先の記事 「カラムレイアウトを考える」 でも少し触れましたが、 WordPres...

記事を読む

eyecatch_template

single.php を作成する – [2]

今回は 個別投稿記事を表示する single.php 作成の続きです。 前回作成...

記事を読む

eyecatch_template

search.php を作成する

今回は、検索結果 (一覧) ページである search.php を作成します。 ...

記事を読む

カレンダー

2024年3月
« 7月    
 12
3456789
10111213141516
17181920212223
24252627282930
31  
PAGE TOP ↑