Ricevi tutti i messaggi in RSS


10

Mi chiedo come / se posso accedere a più dei post X più recenti definiti nelle impostazioni di wordpress. Ho visto plug-in che migrano tutto il contenuto del blog tramite RSS, non hanno frugato in giro per vedere i loro metodi.

Fondamentalmente gestisco un paio di centinaia di blog WordPress e sto costruendo un generatore di newsletter per i miei clienti. Vogliono essere in grado di selezionare alcuni post e far apparire gli estratti nel corpo della newsletter. I siti sono distribuiti su più server e il generatore di newsletter è stato creato sulla base del nostro CRM, quindi le query dirette sul database sarebbero difficili. L'RSS sarebbe il più pulito, ma non riesco a capire come accedere a più di 10 alla volta (quando 10 è impostato nell'amministratore).

Qualche idea?


cosa intendi con "10 è impostato nell'amministratore"?
gcb,

Risposte:


5

Il codice ha un frammento di esempio su come utilizzare il post_limitsfiltro per sovrascrivere la quantità impostata in admin per il 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
Questa potrebbe essere un'opzione, ma speravo di evitare di dover modificare il codice tema su oltre 700 siti.
bhamrick,

1
Quindi questo è quello che ho finito per fare. I miei siti sono distribuiti su una manciata di installazioni di WordPress-Mu, quindi non sono letteralmente centinaia di diverse istanze 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 scritto uno script che ha aggiornato il database per attivare quel plugin sui siti di cui avevo bisogno. Fatto. Grazie per l'aiuto.
bhamrick,

21

Un modo per ottenere i tuoi post è chiamare le diverse pagine del feed rss nel tuo generatore di newsletter. È un approccio sicuro che non richiede l'aggiornamento delle varie installazioni di Wordpress:

yourwebsite.com/feed -> ottieni gli ultimi 10 post

yourwebsite.com/feed/ ? paged = 2 -> ottieni i prossimi 10 post

E così via.


4

Sfortunatamente, ciò che stai cercando di fare è generalmente disapprovato nella maggior parte delle comunità. Quello che ti sento chiedere è:

  • Un modo per recuperare in 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 usata per raschiare i contenuti dai blog e ripubblicarli senza il permesso dell'autore originale. Ecco perché dico che è generalmente disapprovato. La maggior parte degli autori di blog dedica molto tempo ed energie allo sviluppo di grandi contenuti, quindi rendere facile a terzi sfruttare il loro duro lavoro per aggiungere credito SEO al proprio sito è ... beh ... elegante.

Detto questo, suppongo per il momento che tu abbia motivi legittimi per raschiare il contenuto da oltre 700 siti. In tal caso, consiglierei un metodo programmatico separato, non RSS. Se disponi di informazioni di accesso legittime per tutti questi siti (vale a dire che sono i tuoi siti e non quelli di qualcun altro) puoi utilizzare le funzioni XML-RPC integrate di WordPress per recuperare il contenuto.

Utilizza la libreria XML-RPC integrata per inoltrare una richiesta per metaWeblog.getRecentPostsspecificare l'ID del blog (in genere 0 per singoli siti, ma potrebbe essere diverso in più siti), il nome utente di WordPress, la password di WordPress e il numero di post per recuperare (impostalo su -1 per riceverli tutti).

L'altro sito risponderà con un file XML (piuttosto grande) contenente il contenuto che puoi fare con quello che vuoi. Tutto ciò può accadere dietro le quinte e la metaWeblog.getRecentPostsrichiesta fornirà molte più informazioni rispetto a un feed RSS (compresi i campi personalizzati, che potrebbero essere importanti per te).


2

Se la memoria serve, passare -1 come il numero di post ha lo stesso effetto. Tuttavia, non sono del tutto sicuro di come venga lanciato in un URL.

Per inciso, se ti piacciono davvero oltre 700 siti, considera di avere un cron che svn aggiorna o git pull da un ramo stabile, da un repository privato su base giornaliera ... In combinazione con una chiamata http giornaliera a wp- admin / upgrade.php. Ti farà risparmiare un sacco di problemi durante l'aggiornamento o l'ottimizzazione dei siti, in quanto verrà fatto automaticamente.



0

Se vai su Impostazioni> Lettura> e modifichi il valore in "I feed di syndication mostrano i più recenti" con un numero adatto a te, verrà visualizzato fino al numero di feed che hai inserito.


0

Pur non essendo "tutti i post", direi che un limitparametro è molto più utile.

Consiglierei di filtrare direttamente l'opzione "posts_per_rss" in quanto tale:

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

È quindi possibile accedere al feed in questo modo: http://example.org/category/acme/feed/?limit=999

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.