Ottenere tutti i post nel feed RSS

1 dic 2010, 18:57:36
Visualizzazioni: 35.6K
Voti: 12

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?

1
Commenti

Cosa intendi con "10 è impostato nell'amministrazione"?

gcb gcb
21 apr 2011 00:37:58
Tutte le risposte alla domanda 7
1
27

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.

20 gen 2011 11:52:53
Commenti

Questo! Davvero utile per molti casi d'uso.

Alim Özdemir Alim Özdemir
9 set 2022 14:03:16
2

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

1 dic 2010 20:37:05
Commenti

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

bhamrick bhamrick
1 dic 2010 21:35:43

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.

bhamrick bhamrick
3 dic 2010 02:46:29
0

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).

3 dic 2010 00:25:12
0

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

13 mar 2019 19:28:11
0

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.

1 dic 2010 22:49:47
0

potresti voler utilizzare un aggregatore RSS come FeedWordpress

2 dic 2010 21:21:17
0

Se vai su Impostazioni > Lettura > e cambi il valore in "I feed di syndication mostrano i più recenti" con un numero che preferisci, verranno mostrati fino al numero di feed che hai inserito.

16 feb 2012 00:30:40