it-swarm.com.de

Erhalten Sie alle Beiträge in RSS

Ich frage mich, wie/ob ich auf mehr als die neuesten X-Posts zugreifen kann, die in den WordPress-Einstellungen definiert sind. Ich habe Plugins gesehen, die den gesamten Bloginhalt über RSS migrieren und nicht nach ihren Methoden gesucht haben.

Grundsätzlich verwalte ich ein paar hundert WordPress-Blogs und erstelle einen Newsletter-Generator für meine Kunden. Sie möchten in der Lage sein, einige Beiträge auszuwählen und die Auszüge im Rundschreibenkörper erscheinen zu lassen. Die Websites sind auf mehrere Server verteilt und der Newsletter-Generator baut auf unserem CRM auf, sodass direkte Datenbankabfragen schwierig wären. RSS wäre das sauberste, aber ich kann nicht herausfinden, wie ich auf mehr als 10 gleichzeitig zugreifen kann (wenn 10 im Admin festgelegt ist).

Irgendwelche Ideen?

7
bhamrick

Codex hat ein Beispiel-Snippet zur Verwendung des post_limits-Filters, um den in admin für Feeds festgelegten Betrag zu überschreiben.

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

Eine Möglichkeit, Ihre Beiträge zu erhalten, besteht darin, die verschiedenen Seiten des RSS-Feeds in Ihrem Newsletter-Generator aufzurufen. Es ist ein sicherer Ansatz, der keine Aktualisierung Ihrer verschiedenen Wordpress-Installationen erfordert:

yourwebsite.com/feed -> die letzten 10 Beiträge erhalten

yourwebsite.com/feed/? paged = 2 -> erhalte die nächsten 10 Beiträge

Und so weiter.

20
user2611

Leider ist das, was Sie versuchen, in den meisten Gemeinden verpönt. Was ich höre, dass Sie danach fragen, ist:

  • Eine Möglichkeit, aus der Ferne mehr als die Standardanzahl von (letzten Posts) abzurufen.
  • Rufen Sie möglicherweise alle veröffentlichten Posts für eine Site ab
  • Ohne direkte Interaktion mit der Site selbst (über RSS)

Dies ist eine gängige Vorgehensweise, um Inhalte von Blogs zu entfernen und ohne Erlaubnis des ursprünglichen Autors erneut zu veröffentlichen. Deshalb sage ich, dass es allgemein verpönt ist. Die meisten Blog-Autoren investieren viel Zeit und Energie in die Entwicklung großartiger Inhalte. Daher ist es ... nun ja ... mühsam, es Dritten leicht zu machen, ihre harte Arbeit für das Hinzufügen von SEO-Guthaben zu ihrer eigenen Website zu nutzen.

Trotzdem gehe ich für den Moment davon aus, dass Sie berechtigte Gründe haben, Inhalte von über 700 Websites zu entfernen. In diesem Fall würde ich eine separate, programmatische Methode empfehlen - nicht RSS. Wenn Sie über legitime Anmeldeinformationen für alle diese Websites verfügen (d. H. Für Ihre Websites und nicht für Websites anderer), können Sie die in WordPress integrierten XML-RPC-Funktionen verwenden, um den Inhalt abzurufen.

Verwenden Sie die integrierte XML-RPC-Bibliothek, um eine Anforderung an metaWeblog.getRecentPosts weiterzuleiten. Geben Sie dabei die ID des Blogs (normalerweise 0 für einzelne Sites, bei mehreren Sites können sie jedoch abweichen), Ihren WordPress-Benutzernamen, Ihr WordPress-Passwort und die Nummer von an abzurufende Posts (setzen Sie dies auf -1, um alle zu erhalten).

Die andere Site antwortet mit einer (ziemlich großen) XML-Datei, die den Inhalt enthält, den Sie mit dem tun können, was Sie wollen. Dies kann alles hinter den Kulissen geschehen, und die metaWeblog.getRecentPosts-Anforderung gibt Ihnen viel mehr Informationen als ein RSS-Feed (einschließlich benutzerdefinierter Felder, die für Sie möglicherweise wichtig sind).

4
EAMann

Wenn der Speicher belegt ist, hat die Übergabe von -1 als Anzahl der Beiträge den gleichen Effekt. Nicht ganz sicher, wie es in eine URL geworfen wird.

Nebenbei bemerkt, wenn Sie wirklich mehr als 700 Sites haben möchten, sollten Sie erwägen, einen Cron zu haben, der svn updates oder git täglich aus einem stabilen Zweig aus einem privaten Repository bezieht. admin/upgrade.php. Das erspart Ihnen eine Menge Ärger beim Upgraden oder Optimieren Ihrer Websites - da dies automatisch erledigt wird.

2

Obwohl nicht "alle Beiträge", würde ich argumentieren, dass ein limit -Parameter viel nützlicher ist.

Ich würde empfehlen, die Option "posts_per_rss" direkt als solche zu filtern:

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

Der Feed könnte dann folgendermaßen aufgerufen werden: http://example.org/category/acme/feed/?limit=999

0
farinspace

vielleicht möchten Sie einen RSS-Aggregator wie FeedWordpress verwenden

0
mireille raad

Wenn Sie zu Einstellungen> Lesen> gehen und den Wert in "Syndication-Feeds zeigen den neuesten Stand" auf eine Zahl ändern, die zu Ihnen passt, wird die Anzahl der eingegebenen Feeds angezeigt.

0
vegaskevin