Holen Sie sich alle Beiträge in RSS

10

Ich frage mich, wie / ob ich auf mehr als die neuesten X-Beiträge zugreifen kann, die in den WordPress-Einstellungen definiert sind. Ich habe Plugins gesehen, die alle Blog-Inhalte über RSS migrieren, und habe nicht nach ihren Methoden gesucht.

Grundsätzlich verwalte ich ein paar hundert WordPress-Blogs und baue einen Newsletter-Generator für meine Kunden. Sie möchten in der Lage sein, einige Beiträge auszuwählen und die Auszüge im Newsletter-Text erscheinen zu lassen. Die Websites sind auf mehrere Server verteilt, und der Newsletter-Generator basiert auf unserem CRM, sodass direkte Datenbankabfragen schwierig sind. RSS wäre am saubersten, aber ich kann anscheinend nicht herausfinden, wie auf mehr als 10 gleichzeitig zugegriffen werden kann (wenn 10 im Administrator festgelegt ist).

Irgendwelche Ideen?

Bhamrick
quelle
Was meinst du mit "10 ist im Admin eingestellt"?
GCB

Antworten:

5

Codex enthält ein Beispiel-Snippet zur Verwendung des post_limitsFilters zum Überschreiben des in admin für den Feed festgelegten Betrags.

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

Selten
quelle
1
Dies mag eine Option sein, aber ich hatte gehofft, nicht den Themencode auf über 700 Websites ändern zu müssen.
Bhamrick
1
Das habe ich also getan. Meine Websites sind auf eine Handvoll WordPress-Mu-Installationen verteilt, sodass es nicht buchstäblich Hunderte verschiedener Instanzen von WordPress auf Hunderten von Servern gibt. Das Problem war, dass ich diese Funktionalität nur auf EINIGEN der Sites in jeder Mu-Installation benötigte. Also habe ich ein Plugin geschrieben, das dies tut, ein Skript geschrieben, das die Datenbank aktualisiert, um dieses Plugin auf den von mir benötigten Sites zu aktivieren. Getan. Danke für die Hilfe.
Bhamrick
21

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, bei dem Ihre verschiedenen Wordpress-Installationen nicht aktualisiert werden müssen:

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

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

Und so weiter.


quelle
4

Leider ist das, was Sie versuchen, in den meisten Gemeinden allgemein verpönt. Ich höre Sie fragen:

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

Dies ist eine übliche Vorgehensweise, um Inhalte aus 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 ... einfach, es Dritten zu erleichtern, ihre harte Arbeit zu nutzen, um ihrer eigenen Website SEO-Guthaben hinzuzufügen.

Trotzdem gehe ich im 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 (dh es handelt sich um Ihre Websites und nicht um die anderer Personen), 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 zur metaWeblog.getRecentPostsAngabe der ID des Blogs (normalerweise 0 für einzelne Websites, kann jedoch bei mehreren Websites unterschiedlich sein), Ihres WordPress-Benutzernamens, Ihres WordPress-Kennworts und der Anzahl der Beiträge zu übergeben zu holen (setzen Sie dies auf -1, um sie alle zu empfangen).

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

EAMann
quelle
2

Wenn Speicherplatz zur Verfügung steht, hat das Übergeben von -1 als Anzahl der Beiträge den gleichen Effekt. Ich bin mir jedoch nicht ganz sicher, wie es in eine URL geworfen wird.

Abgesehen davon, wenn Sie wirklich mehr als 700 Websites haben möchten, sollten Sie einen Cron in Betracht ziehen, der SVN-Updates oder Git täglich aus einem stabilen Zweig oder aus einem privaten Repository abruft ... Kombiniert mit einem täglichen http-Aufruf an wp- admin / upgrade.php. Dies erspart Ihnen viele Probleme beim Aktualisieren oder Optimieren Ihrer Websites - da dies automatisch erledigt wird.

Denis de Bernardy
quelle
0

Möglicherweise möchten Sie einen RSS-Aggregator wie FeedWordpress verwenden

Mireille Raad
quelle
0

Wenn Sie zu Einstellungen> Lesen> gehen und den Wert in "Syndication-Feeds zeigen die neuesten an" in eine für Sie passende Zahl ändern, wird die Anzahl der von Ihnen eingegebenen Feeds angezeigt.

vegaskevin
quelle
0

Obwohl nicht "alle Beiträge", würde ich argumentieren, dass ein limitParameter 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;
}

Auf den Feed kann dann wie folgt zugegriffen werden: http://example.org/category/acme/feed/?limit=999

Farinspace
quelle