Obține toate postările în RSS

1 dec. 2010, 18:57:36
Vizualizări: 35.6K
Voturi: 12

Mă întreb cum/dacă pot accesa mai multe posturi decât cele mai recente X posturi definite în setările WordPress. Am văzut plugin-uri care migrează tot conținutul blogului prin RSS, dar nu am investigat metodele lor.

Practic, administrez câteva sute de bloguri WordPress și construiesc un generator de newsletter pentru clienții mei. Ei doresc să poată selecta câteva posturi și să aibă extrasele afișate în corpul newsletter-ului. Site-urile sunt răspândite pe mai multe servere, iar generatorul de newsletter este construit peste CRM-ul nostru, astfel încât interogările directe în baza de date ar fi dificile. RSS ar fi cea mai curată soluție, dar nu pot să-mi dau seama cum să accesez mai mult de 10 posturi odată (când 10 este setat în panoul de administrare).

Aveți idei?

1
Comentarii

ce înțelegi prin „10 este setat în admin”?

gcb gcb
21 apr. 2011 00:37:58
Toate răspunsurile la întrebare 7
1
27

O modalitate de a obține articolele tale este să apelezi diferitele pagini ale fluxului RSS în generatorul de buletine informative. Este o abordare sigură care nu necesită actualizarea diverselor instalări WordPress:

siteultau.com/feed -> obții ultimele 10 articole

siteultau.com/feed/?paged=2 -> obții următoarele 10 articole

Și așa mai departe.

20 ian. 2011 11:52:53
Comentarii

Acest lucru! Cu adevărat util pentru multe cazuri de utilizare.

Alim Özdemir Alim Özdemir
9 sept. 2022 14:03:16
2

Codex oferă un fragment de cod exemplu despre cum să utilizezi filtrul post_limits pentru a suprascrie cantitatea setată în administrare pentru flux.

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 dec. 2010 20:37:05
Comentarii

Aceasta poate fi o opțiune, dar speram să evit necesitatea de a modifica codul temei pe peste 700 de site-uri.

bhamrick bhamrick
1 dec. 2010 21:35:43

Deci, asta am făcut în final. Site-urile mele sunt distribuite pe câteva instalări WordPress-Mu, deci nu sunt literalmente sute de instanțe diferite de WordPress pe sute de servere. Problema era că aveam nevoie de această funcționalitate doar pe unele dintre site-urile din fiecare instalare Mu. Așa că am scris un plugin care face asta, am scris un script care a actualizat baza de date pentru a activa acel plugin pe site-urile de care aveam nevoie. Gata. Mulțumesc pentru ajutor.

bhamrick bhamrick
3 dec. 2010 02:46:29
0

Din păcate, ceea ce încerci să faci este, în general, dezaprobat în majoritatea comunităților. Ceea ce aud că ceri este:

  • O modalitate de a prelua de la distanță mai multe postări decât numărul implicit (postări recente)
  • Posibil să preiei toate postările publicate pentru un site
  • Fără a avea nicio interacțiune directă cu site-ul în sine (folosind RSS)

Aceasta este o practică folosită în mod obișnuit pentru a extrage conținut de pe bloguri și a-l republica fără permisiunea autorului original. De aceea spun că este, în general, dezaprobată. Majoritatea autorilor de bloguri investesc mult timp și energie în dezvoltarea de conținut de calitate, așa că a face ușor pentru o terță parte să profite de munca lor pentru a adăuga credit SEO propriului site este... ei bine... lipsit de scrupule.

Cu toate acestea, voi presupune pentru moment că ai motive legitime pentru a extrage conținut de la peste 700 de site-uri. În acest caz, aș recomanda o metodă programatică separată - nu RSS. Dacă ai date de autentificare legitime pentru toate aceste site-uri (adică sunt site-urile tale și nu ale altcuiva), poți folosi caracteristicile încorporate ale WordPress XML-RPC pentru a prelua conținutul.

Folosește biblioteca încorporată XML-RPC pentru a trimite o cerere către metaWeblog.getRecentPosts specificând ID-ul blogului (de obicei 0 pentru site-uri simple, dar poate fi diferit în cazul multi-site), numele tău de utilizator WordPress, parola ta WordPress și numărul de postări de preluat (setează această valoare la -1 pentru a le primi pe toate).

Celălalt site va răspunde cu un fișier XML (destul de mare) care conține conținutul pe care îl poți folosi după cum dorești. Toate acestea se pot întâmpla în fundal, iar cererea metaWeblog.getRecentPosts îți va oferi mult mai multe informații decât un flux RSS (inclusiv câmpuri personalizate, care ar putea fi importante pentru tine).

3 dec. 2010 00:25:12
0

Deși nu sunt "toate articolele", aș argumenta că un parametru limit este mult mai util.

Aș recomanda filtrarea directă a opțiunii "posts_per_rss" astfel:

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

Feed-ul ar putea fi accesat apoi astfel: http://example.org/category/acme/feed/?limit=999

13 mar. 2019 19:28:11
0

Dacă îmi amintesc corect, trecerea valorii -1 ca număr de postări are același efect. Nu sunt complet sigur cum este inclusă în URL, totuși.

Ca o observație laterală, dacă chiar dorești să ai peste 700 de site-uri, ia în considerare să configurezi un cron care să facă update prin svn sau să facă pull prin git dintr-o ramură stabilă, dintr-un repository privat zilnic... Combinat cu un apel HTTP zilnic către wp-admin/upgrade.php. Acest lucru te va scuti de multe probleme la actualizarea sau ajustarea site-urilor tale - deoarece totul se va face automat.

1 dec. 2010 22:49:47
0

poți dori să utilizezi un agregator RSS precum FeedWordpress

2 dec. 2010 21:21:17
0

Dacă te duci în Setări > Citire > și modifici valoarea din „Fluxurile de sindicalizare afișează cele mai recente” la un număr care ți se potrivește, acesta va afișa până la numărul de fluxuri pe care îl introduci.

16 feb. 2012 00:30:40