add_feed()


WordPress関数add_feed()は、カスタムフィードを追加するために使用されます。

構文

add_feed( string $feedname, callable $function );

引数の説明

  • $feedname (string) — フィードの名前を指定します。
  • $function (callable) — フィードの出力を処理するためのコールバック関数を指定します。

例1: カスタムフィードの追加

以下のコードは、custom_feedという名前のカスタムフィードを追加します。

<?php
function my_custom_feed_callback() {
    echo 'カスタムフィードの内容';
}
add_action( 'init', function() {
    add_feed( 'custom_feed', 'my_custom_feed_callback' );
});
?>

例2: 投稿データを含むカスタムフィード

投稿タイトルとリンクをカスタムフィードに含める例です。

<?php
function my_post_feed_callback() {
    $query = new WP_Query( array( 'posts_per_page' => 5 ) );
    header( 'Content-Type: application/rss+xml' );
    echo '<?xml version="1.0" encoding="UTF-8" ?>';
    echo '<rss version="2.0"><channel>';
    while ( $query->have_posts() ) {
        $query->the_post();
        echo '<item>';
        echo '<title>' . get_the_title() . '</title>';
        echo '<link>' . get_permalink() . '</link>';
        echo '</item>';
    }
    echo '</channel></rss>';
}
add_action( 'init', function() {
    add_feed( 'post_feed', 'my_post_feed_callback' );
});
?>

例3: 特定のカテゴリ専用フィード

特定のカテゴリの記事のみを含むカスタムフィードを作成します。

<?php
function my_category_feed_callback() {
    $query = new WP_Query( array( 'category_name' => 'news', 'posts_per_page' => 5 ) );
    header( 'Content-Type: application/rss+xml' );
    echo '<?xml version="1.0" encoding="UTF-8" ?>';
    echo '<rss version="2.0"><channel>';
    while ( $query->have_posts() ) {
        $query->the_post();
        echo '<item>';
        echo '<title>' . get_the_title() . '</title>';
        echo '<link>' . get_permalink() . '</link>';
        echo '</item>';
    }
    echo '</channel></rss>';
}
add_action( 'init', function() {
    add_feed( 'category_news', 'my_category_feed_callback' );
});
?>

例4: 非公開投稿を含むフィード

ログイン済みユーザーに非公開投稿を表示するカスタムフィードを作成します。

<?php
function my_private_feed_callback() {
    if ( is_user_logged_in() ) {
        $query = new WP_Query( array( 'post_status' => 'private', 'posts_per_page' => 5 ) );
        header( 'Content-Type: application/rss+xml' );
        echo '<?xml version="1.0" encoding="UTF-8" ?>';
        echo '<rss version="2.0"><channel>';
        while ( $query->have_posts() ) {
            $query->the_post();
            echo '<item>';
            echo '<title>' . get_the_title() . '</title>';
            echo '<link>' . get_permalink() . '</link>';
            echo '</item>';
        }
        echo '</channel></rss>';
    } else {
        wp_die( 'ログインが必要です。' );
    }
}
add_action( 'init', function() {
    add_feed( 'private_feed', 'my_private_feed_callback' );
});
?>

注意事項

  • カスタムフィードの名前は既存のフィードと重複しないようにしてください。
  • コールバック関数で適切なヘッダーを出力し、XML形式を遵守してください。
  • デバッグ中はキャッシュを無効化してフィードの更新を確認してください。

関連機能: