概要
feed_links フィルタは、一般的なフィードへのリンクを表示するために使用されます。このフィルタは、カスタムフィードを追加したり、デフォルトのフィードリンクを変更するのに役立ちます。具体的には、以下のような機能を実装する際によく使われます。
- デフォルトの RSS フィードへのリンクを変更する
- 特定のカスタムフィードを追加する
- フィードのメタデータをカスタマイズする
- フィードに条件を付けて表示する
- 特定の投稿タイプに基づいてフィードリンクを調整する
- フィードのリンクをユーザーの権限に基づいて制御する
- サイトの多言語対応のためのフィードリンクを追加する
- クライアントにとって特別なフィードリンクを表示する
このフィルタは、主に wp_head() の中で使用され、埋め込まれるフィードのリンクをデフォルトの形式から変更する際に役立ちます。
構文
add_filter('feed_links', 'your_callback_function');
パラメータ
- $output: 生成されたフィードリンクの HTML 文字列。
feed_linksフィルタによってこの値を変更することができます。
戻り値
- 変更されたフィードリンクの HTML 文字列。
関連する関数
使用可能なバージョン
feed_links フィルタは、WordPress 1.5.0 以降で使用可能です。
コアファイルのパス
wp-includes/feed.php
この関数のアクションでの使用可能性
| アクション | 使用例 |
|---|---|
| mu_plugin_loaded | |
| registered_post_type | |
| plugins_loaded | |
| wp_roles_init | |
| setup_theme | |
| after_setup_theme | |
| set_current_user | |
| init | |
| register_sidebar | |
| wp_loaded | |
| send_headers | |
| parse_query | |
| pre_get_posts | |
| wp | |
| template_redirect | |
| get_header | |
| wp_head | 〇 |
サンプルコード
1. デフォルトのフィードリンクをカスタマイズ
add_filter('feed_links', 'custom_feed_links');
function custom_feed_links($output) {
// フィードリンクをカスタマイズ
$output .= '<link rel="alternate" type="application/rss+xml" title="カスタムフィード" href="' . get_bloginfo('feed') . '?custom=true" />';
return $output;
}
このコードは、デフォルトのフィードリンクにカスタムフィードリンクを追加します。
2. 特定の投稿タイプのフィードリンクを表示
add_filter('feed_links', 'add_custom_post_type_feed');
function add_custom_post_type_feed($output) {
if (is_post_type_archive('custom_post')) {
$output .= '<link rel="alternate" type="application/rss+xml" title="Custom Post Feed" href="' . get_post_type_archive_feed_link('custom_post') . '" />';
}
return $output;
}
このサンプルは、特定の投稿タイプのアーカイブページでフィードリンクを追加します。
3. 特定の条件でフィードリンクを変更
add_filter('feed_links', 'conditional_feed_links');
function conditional_feed_links($output) {
if (is_single() && 'your_post_type' == get_post_type()) {
$output .= '<link rel="alternate" type="application/atom+xml" title="Atom Feed" href="' . get_queried_object()->guid . '?format=atom" />';
}
return $output;
}
特定の投稿タイプに対する条件付きで Atom フィードを追加する例です。
4. ユーザー権限に基づくフィードリンクの制御
add_filter('feed_links', 'user_based_feed_links');
function user_based_feed_links($output) {
if (current_user_can('edit_posts')) {
$output .= '<link rel="alternate" type="application/rss+xml" title="Admin Feed" href="' . get_bloginfo('admin_feed') . '" />';
}
return $output;
}
このコードは、投稿を編集できるユーザーにのみ特別なフィードリンクを表示します。
5. 多言語対応フィードへのリンクを追加
add_filter('feed_links', 'multilingual_feed_links');
function multilingual_feed_links($output) {
if (function_exists('pll_current_language')) {
$lang = pll_current_language();
$output .= '<link rel="alternate" type="application/rss+xml" title="フィード (' . strtoupper($lang) . ')" href="' . get_bloginfo('feed') . '?lang=' . $lang . '" />';
}
return $output;
}
このサンプルは、多言語サイトで現在の言語に基づいたフィードリンクを追加します。