web-dev-qa-db-ja.com

RSSフィードに追加のポストメタを付与する

私は私のウェブサイトからポストメタを出力するためにRSSフィードを拡張しようとしています。

私は 'event_date'メタキーを持っています、そして私は私がその情報を手に入れることができたならどうすればいいか知っているRSS標準出版日とは対照的にこれによって注文する必要があります。

私はRSSフィードで利用可能なWordpressのアクションフックを利用する以下のコードを使用しています。しかし、これらのフックを使用すると、フィードにはアイテムが見つからないと報告されますが、これらがないとアイテムは見つかりますが、もちろん必要に応じて注文することはできません。

RSSフィードに出力する方法で何か問題がありますか。

/**
 * Adds the 'event_date' meta value to a feed
 */
add_action('atom_entry', 'add_event_date_to_feed');
add_action('rdf_item', 'add_event_date_to_feed');
add_action('rss_item', 'add_event_date_to_feed');
add_action('rss2_item', 'add_event_date_to_feed');
function add_event_date_to_feed(){

    global $post;

    $event_date_raw = get_post_meta($post->ID, 'event_date', true);
    if($event_date_raw && $event_date_raw !== '') :
        $date_object = DateTime::createFromFormat('D, d M Y H:i:s +0000', $event_date_raw);
        $event_date = $date->format('U');
    else : 
        $event_date = '';
    endif;
    printf("\t\t".'<eventDate>%1$s</eventDate>'."\n", $event_date);

}
1
David Gard

WordPressはreadingfeedに対してSimplePieを使用します。フィードの生成には使用しません。ここでは2つの異なることを見ています。

  1. RSSフィードでoutputカスタム投稿メタにしたい。
  2. あなたは他のどこかでそのカスタム投稿メタを読みたいです。

最初の部分はかなり簡単です。 WordPressは カスタムRSSフィードテンプレート をサポートします。あなたは実際にあなたのカスタム投稿メタを含むカスタムRSSフィードで標準RSSフィードを置き換えることができます。

消費カスタムデータに関しては、それはかなり簡単です。 SimplePieはRSSフィードを読み取り、XMLファイルに含まれていたものすべてを含むフィードオブジェクトを作成します。他のオブジェクトと同じようにそれを使用してください。

2
EAMann