ワードプレスのfeed_linksフィルタの使用方法・解説

概要

feed_links フィルタは、一般的なフィードへのリンクを表示するために使用されます。このフィルタは、カスタムフィードを追加したり、デフォルトのフィードリンクを変更するのに役立ちます。具体的には、以下のような機能を実装する際によく使われます。

  1. デフォルトの RSS フィードへのリンクを変更する
  2. 特定のカスタムフィードを追加する
  3. フィードのメタデータをカスタマイズする
  4. フィードに条件を付けて表示する
  5. 特定の投稿タイプに基づいてフィードリンクを調整する
  6. フィードのリンクをユーザーの権限に基づいて制御する
  7. サイトの多言語対応のためのフィードリンクを追加する
  8. クライアントにとって特別なフィードリンクを表示する

このフィルタは、主に wp_head() の中で使用され、埋め込まれるフィードのリンクをデフォルトの形式から変更する際に役立ちます。

構文

add_filter('feed_links', 'your_callback_function');

パラメータ

  • $output: 生成されたフィードリンクの HTML 文字列。feed_links フィルタによってこの値を変更することができます。

戻り値

  • 変更されたフィードリンクの HTML 文字列。

関連する関数

feed_links

使用可能なバージョン

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;
}

このサンプルは、多言語サイトで現在の言語に基づいたフィードリンクを追加します。

この関数について質問する


上の計算式の答えを入力してください