Pobierz wszystkie posty w RSS


10

Zastanawiam się, jak / czy mogę uzyskać dostęp do więcej niż najnowszych postów X zdefiniowanych w ustawieniach wordpress. Widziałem wtyczki, które migrują całą zawartość blogu przez RSS, nie szukałem ich metod.

Zasadniczo zarządzam kilkoma blogami WordPress i tworzę generator biuletynów dla moich klientów. Chcą mieć możliwość wybrania kilku postów i udostępnienia fragmentów w treści biuletynu. Witryny są rozmieszczone na wielu serwerach, a generator biuletynów jest budowany na bazie naszego CRM, więc bezpośrednie zapytania do bazy danych byłyby trudne. RSS byłby najczystszy, ale wydaje mi się, że nie mogę dowiedzieć się, jak uzyskać dostęp do więcej niż 10 na raz (gdy 10 jest ustawione w adminie).

Jakieś pomysły?


co rozumiesz przez „10 jest ustawione w adminie”?
gcb

Odpowiedzi:


5

Kodeks zawiera przykładowy fragment opisujący sposób użycia post_limitsfiltru do zastąpienia kwoty ustawionej w adminie dla kanału.

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
To może być opcja, ale miałem nadzieję uniknąć konieczności modyfikowania kodu motywu na ponad 700 stronach.
bhamrick,

1
Tak właśnie skończyłem. Moje witryny są rozmieszczone w kilku instalacjach WordPress-Mu, więc nie są to dosłownie setki różnych wystąpień WordPress na setkach serwerów. Problem polegał na tym, że potrzebowałem tej funkcji tylko w NIEKTÓRYCH witrynach w ramach każdej instalacji Mu. Napisałem więc wtyczkę, która to robi, napisałem skrypt, który zaktualizował bazę danych, aby aktywować tę wtyczkę na potrzebnych stronach. Gotowy. Dzięki za pomoc.
bhamrick,

21

Sposobem na uzyskanie swoich postów jest wywołanie różnych stron kanału rss w generatorze biuletynów. Jest to bezpieczne podejście, które nie wymaga aktualizacji różnych instalacji Wordpress:

twojastrona.com/feed -> uzyskaj 10 ostatnich postów

twojastrona.com/feed/ ? paged = 2 -> zdobądź kolejne 10 postów

I tak dalej.


4

Niestety, to, co próbujesz zrobić, jest ogólnie odrzucone w większości społeczności. Słyszę, że prosisz o:

  • Sposób na zdalne pobieranie więcej niż domyślna liczba (ostatnich postów)
  • Prawdopodobnie pobierz wszystkie opublikowane posty na stronie
  • Bez jakiejkolwiek bezpośredniej interakcji z samą witryną (za pomocą RSS)

Jest to praktyka powszechnie stosowana do zeskrobywania treści z blogów i ponownego opublikowania ich bez zgody oryginalnego autora. Dlatego mówię, że to na ogół marszczy brwi. Większość autorów blogów poświęca wiele czasu i energii na tworzenie świetnych treści, więc ułatwienie stronom trzecim ciężkiej pracy nad dodaniem kredytu SEO do własnej witryny jest ... cóż ... kiepskie.

To powiedziawszy, zakładam, że masz uzasadnione powody, by skrobać zawartość z ponad 700 witryn. W takim przypadku poleciłbym osobną, programową metodę - nie RSS. Jeśli posiadasz prawidłowe dane logowania do wszystkich tych stron (tj. Są to twoje strony, a nie innych), możesz użyć wbudowanych funkcji XML-RPC do WordPressa, aby pobrać zawartość.

Skorzystaj z wbudowanej biblioteki XML-RPC, aby przekazać żądanie metaWeblog.getRecentPostspodania identyfikatora bloga (zwykle 0 dla pojedynczych witryn, ale może być różny dla wielu witryn), swojej nazwy użytkownika WordPress, hasła WordPress i liczby postów do pobrania (ustaw na -1, aby otrzymać je wszystkie).

Druga strona odpowie (raczej dużym) plikiem XML zawierającym treść, którą możesz zrobić z tym, co chcesz. To wszystko może się zdarzyć za kulisami, a metaWeblog.getRecentPostsżądanie dostarczy Ci znacznie więcej informacji niż kanał RSS (w tym niestandardowe pola, które mogą być dla Ciebie ważne).


2

Jeśli pamięć służy, przekazanie -1 jako liczby postów ma ten sam efekt. Jednak nie do końca wiadomo, jak zostanie wrzucony do adresu URL.

Nawiasem mówiąc, jeśli naprawdę chcesz mieć ponad 700 witryn, zastanów się nad posiadaniem crona, który svn aktualizuje lub git ściąga ze stabilnego oddziału, z prywatnego repozytorium na co dzień ... W połączeniu z codziennym wywołaniem http do wp- admin / upgrade.php. Pozwoli ci to zaoszczędzić wiele kłopotów przy aktualizacji lub ulepszaniu twoich stron - dzięki temu zrobisz to automatycznie.



0

Jeśli przejdziesz do opcji Ustawienia> Czytanie> i zmienisz wartość w polu „Kanały syndykacji pokazują najnowsze” na liczbę, która Ci odpowiada, wyświetli się ona do liczby wprowadzonych kanałów.


0

Chociaż nie „wszystkie posty”, twierdzę, że limitparam jest o wiele bardziej przydatny.

Poleciłbym bezpośrednio odfiltrować opcję „posts_per_rss” jako taką:

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

Następnie można uzyskać dostęp do kanału: http://example.org/category/acme/feed/?limit=999

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.