Ottenere tutti i post nel feed RSS
Mi chiedo come/se posso accedere a più dei recenti X post definiti nelle impostazioni di WordPress. Ho visto plugin che migrano tutto il contenuto del blog attraverso RSS, ma non ho approfondito i loro metodi.
In pratica gestisco un paio di centinaia di blog WordPress e sto costruendo un generatore di newsletter per i miei clienti. Vogliono poter selezionare alcuni post e far apparire gli estratti nel corpo della newsletter. I siti sono distribuiti su più server e il generatore di newsletter viene costruito sopra il nostro CRM, quindi le query dirette al database sarebbero difficili. RSS sarebbe la soluzione più pulita, ma non riesco a capire come accedere a più di 10 post alla volta (quando 10 è impostato nell'amministrazione).
Qualche idea?
Un modo per ottenere i tuoi articoli è chiamare le diverse pagine del feed RSS nel tuo generatore di newsletter. È un approccio sicuro che non richiede l'aggiornamento delle tue varie installazioni di Wordpress:
tuosito.com/feed -> ottieni gli ultimi 10 articoli
tuosito.com/feed/?paged=2 -> ottieni i successivi 10 articoli
E così via.

Il Codex contiene un esempio su come utilizzare il filtro post_limits
per sovrascrivere la quantità impostata nell'amministrazione per i feed.
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

Potrebbe essere un'opzione, ma speravo di evitare di dover modificare il codice del tema su oltre 700 siti.

Alla fine ho fatto così. I miei siti sono distribuiti su alcune installazioni di WordPress-Mu, quindi non si tratta letteralmente di centinaia di istanze diverse di WordPress su centinaia di server. Il problema era che avevo bisogno di questa funzionalità solo su ALCUNI dei siti all'interno di ogni installazione Mu. Quindi ho scritto un plugin che fa questo, ho creato uno script che aggiornasse il database per attivare quel plugin sui siti che ne avevano bisogno. Fatto. Grazie per l'aiuto.

Sfortunatamente, ciò che stai cercando di fare è generalmente malvisto nella maggior parte delle comunità. Quello che mi sembra di capire che stai chiedendo è:
- Un modo per recuperare da remoto più del numero predefinito di (post recenti)
- Possibilmente recuperare tutti i post pubblicati per un sito
- Senza avere alcuna interazione diretta con il sito stesso (utilizzando RSS)
Questa è una pratica comunemente utilizzata per raschiare contenuti da blog e ripubblicarli senza il permesso dell'autore originale. Ecco perché dico che è generalmente malvista. La maggior parte degli autori di blog dedica molto tempo ed energia per sviluppare contenuti di qualità, quindi rendere facile a terze parti sfruttare il loro duro lavoro per aggiungere credibilità SEO al proprio sito è... beh... poco etico.
Detto questo, supporrò per il momento che tu abbia motivi legittimi per raschiare contenuti da oltre 700 siti. In tal caso, ti consiglierei un metodo separato e programmatico - non RSS. Se hai credenziali di accesso legittime per tutti questi siti (cioè sono i tuoi siti e non di qualcun altro) puoi utilizzare le funzionalità XML-RPC integrate in WordPress per recuperare i contenuti.
Utilizza la libreria XML-RPC integrata per inviare una richiesta a metaWeblog.getRecentPosts
specificando l'ID del blog (di solito 0 per siti singoli, ma potrebbe essere diverso in multi-site), il tuo username WordPress, la tua password WordPress e il numero di post da recuperare (imposta questo a -1 per riceverli tutti).
L'altro sito risponderà con un (piuttosto grande) file XML contenente i contenuti che puoi gestire come preferisci. Tutto questo può avvenire dietro le quinte, e la richiesta metaWeblog.getRecentPosts
ti fornirà molte più informazioni di un feed RSS (inclusi campi personalizzati, che potrebbero essere importanti per te).

Sebbene non siano "tutti i post", sostengo che un parametro limit
sia molto più utile.
Consiglierei di filtrare direttamente l'opzione "posts_per_rss" in questo modo:
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;
}
Il feed potrebbe quindi essere accessibile in questo modo: http://example.org/category/acme/feed/?limit=999

Se non ricordo male, passare -1 come numero di post ha lo stesso effetto. Non sono del tutto sicuro di come venga inserito in un URL, però.
Come nota a margine, se sei davvero interessato ad avere più di 700 siti, considera l'idea di impostare un cron che esegua un aggiornamento svn o un pull git da un branch stabile, da un repository privato su base giornaliera... Combinato con una chiamata HTTP giornaliera a wp-admin/upgrade.php. Ti risparmierà molti problemi quando dovrai aggiornare o modificare i tuoi siti - poiché verrà fatto automaticamente.
