web-dev-qa-db-ja.com

RSSですべての投稿を取得する

私はどうやって/私はワードプレスの設定で定義された最新のX投稿以上にアクセスできるかどうか疑問に思います。私はRSSを介してすべてのブログコンテンツを移行するプラグインを見たことがありますが、その方法を見て回っていません。

基本的に私は数百のWordPressブログを管理しています、そして私は私のクライアントのためにニュースレタージェネレータを構築しています。彼らはいくつかの投稿を選択し、抜粋をニュースレターの本文に表示させたいと考えています。サイトは複数のサーバーに分散しており、ニュースレタージェネレーターはCRMの上に構築されているため、直接データベースクエリを行うことは困難です。 RSSが最もクリーンですが、一度に10を超えるアクセス方法を見つけることはできません(管理者に10が設定されている場合)。

何か案は?

7
bhamrick

Codexには、フィード用にadminで設定された金額を上書きするためのpost_limitsフィルターの使用方法の例があります。

if (isset ($query->query_vars['feed']) and ($query->query_vars['feed'] == 'ics')) 
    add_filter('post_limits','__return_empty_string'); 

http://codex.wordpress.org/Function_Reference/query_posts#Usage_Tips

4
Rarst

あなたの投稿を取得する方法はあなたのニュースレタージェネレータのRSSフィードの異なるページを呼び出すことです。あなたの様々なWordpressインストールを更新する必要がない安全なアプローチです。

yourwebsite.com/feed - >最新の10件の投稿を取得

yourwebsite.com/feed/?paged = 2 - >次の10件の投稿を取得

等々。

20
user2611

残念ながら、あなたがやろうとしていることは、ほとんどのコミュニティで一般的に眉をひそめています。私があなたが求めているのを聞きます:

  • デフォルトの数(最近の投稿)を超えるリモートで検索する方法
  • サイトの all Published投稿を検索する
  • サイト自体と直接対話することなく(RSSを使用)

これは、元の作者の許可なしに、ブログからコンテンツを削除して再発行するために一般的に使用されている方法です。それが私がそれが一般的に眉をひそめていると言う理由です。ほとんどのブログ作成者は素晴らしいコンテンツの開発に多くの時間と労力を費やしているので、自分のサイトにSEOクレジットを追加するために第三者が自分のハードワークを利用するのを簡単にすることは...うーん...厄介です。

そうは言っても、私はあなたが700以上のサイトからのコンテンツを廃棄する正当な理由があると今のところ仮定します。その場合は、RSSではなく、個別のプログラムによる方法をお勧めします。もしあなたがこれらのサイトすべてに正当なログイン情報を持っていれば(つまりそれらはあなたのサイトであり他の誰かではない)あなたはコンテンツを取得するためにWordPressの組み込みXML-RPC機能を使うことができます。

組み込みのXML-RPCライブラリを使用して、ブログのID(通常は単一サイトの場合は0、複数サイトの場合は異なる場合があります)、WordPressのユーザー名、パスワードを指定してmetaWeblog.getRecentPostsにリクエストを渡します。取得する投稿(すべて受信するには、これを-1に設定します)。

他のサイトはあなたが望むものであなたがすることができる内容を含む(かなり大きい)XMLファイルで応答するでしょう。これはすべて背後で起こる可能性があり、metaWeblog.getRecentPostsリクエストはRSSフィードよりもはるかに多くの情報を提供します(カスタムフィールドを含む、これはあなたにとって重要かもしれません)。

4
EAMann

メモリが機能する場合、投稿数として-1を渡しても同じ効果があります。しかし、それがどのようにしてURLに変換されるのか完全にはわからない。

余談ですが、本当に700以上のサイトを持っているのなら、svn updatesやgitが安定版ブランチから、毎日プライベートリポジトリから引っ張ってくるようなcronを使うことを検討してください。 admin/upgrade.phpあなたのサイトをアップグレードしたり微調整したりするとき、それはあなたに多くの煩わしさを節約するでしょう - それは自動的に行われるでしょうという点で。

2

「すべての記事」ではありませんが、私はlimitパラメータがはるかに便利であると主張します。

私は "posts_per_rss"オプションを直接フィルタリングすることをお勧めします。

add_filter( 'option_posts_per_rss', 'my_posts_per_rss' );
function my_posts_per_rss( $option ) {
    if( isset( $_GET['limit'] ) ) {
        return (int) $_GET['limit'] ?: $option;
    }
    return $option;
}

そうするとフィードは次のようにアクセスされる可能性があります。 http://example.org/category/acme/feed/?limit=999

0
farinspace

あなたはFeedWordpressのようないくつかのRSSアグリゲータを使いたくなるかもしれません

0
mireille raad

[設定]> [閲覧]> [シンジケートフィードで最新のものを表示]の値を自分に合った数値に変更すると、入力したフィードの数まで表示されます。

0
vegaskevin