Dapatkan semua posting di RSS

10

Saya bertanya-tanya bagaimana / jika saya dapat mengakses lebih dari posting X terbaru yang didefinisikan dalam pengaturan wordpress. Saya telah melihat plugin yang memigrasi semua konten blog melalui RSS, belum melihat-lihat metode mereka.

Pada dasarnya saya mengelola beberapa ratus blog WordPress, dan saya sedang membangun generator buletin untuk klien saya. Mereka ingin dapat memilih beberapa posting dan memiliki kutipan yang muncul di badan buletin. Situs-situs tersebut tersebar di beberapa server dan generator buletin sedang dibangun di atas CRM kami, sehingga permintaan basis data langsung akan sulit. RSS akan menjadi yang terbersih, tapi sepertinya saya tidak tahu cara mengakses lebih dari 10 sekaligus (ketika 10 diatur di admin).

Ada ide?

bhamrick
sumber
apa yang Anda maksud dengan "10 diatur di admin"?
gcb

Jawaban:

5

Codex memiliki cuplikan contoh tentang cara menggunakan post_limitsfilter untuk mengganti jumlah yang ditetapkan di admin untuk umpan.

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

Jarang
sumber
1
Ini mungkin pilihan, tetapi saya berharap untuk tidak harus mengubah kode tema di 700+ situs.
bhamrick
1
Jadi inilah yang akhirnya saya lakukan. Situs saya tersebar di beberapa instalasi WordPress-Mu, jadi ini bukan ratusan contoh WordPress yang berbeda di ratusan server. Masalahnya adalah bahwa saya memerlukan fungsi ini hanya pada BEBERAPA situs dalam setiap instalasi Mu. Jadi saya menulis sebuah plugin yang melakukan ini, menulis sebuah skrip yang memperbarui database untuk mengaktifkan plugin itu di situs yang saya butuhkan. Selesai Terima kasih untuk bantuannya.
bhamrick
21

Cara untuk mendapatkan posting Anda adalah dengan memanggil halaman berbeda dari rss feed di generator buletin Anda. Ini adalah pendekatan aman yang tidak perlu memperbarui berbagai instalasi Wordpress Anda:

yourwebsite.com/feed -> dapatkan 10 posting terakhir

yourwebsite.com/feed/ ? paged = 2 -> dapatkan 10 posting berikutnya

Dan seterusnya.


sumber
4

Sayangnya, apa yang Anda coba lakukan umumnya disukai di sebagian besar komunitas. Yang saya dengar Anda minta adalah:

  • Cara mengambil dari jarak jauh lebih dari jumlah default (pos terbaru)
  • Mungkin mengambil semua posting yang dipublikasikan untuk sebuah situs
  • Tanpa berinteraksi langsung dengan situs itu sendiri (menggunakan RSS)

Ini adalah praktik yang biasa digunakan untuk mengikis konten dari blog dan menerbitkannya kembali tanpa izin dari penulis asli. Itu sebabnya saya katakan itu umumnya disukai. Kebanyakan penulis blog menggunakan banyak waktu dan energi untuk mengembangkan konten yang hebat, sehingga memudahkan pihak ketiga untuk meningkatkan kerja keras mereka untuk menambahkan kredit SEO ke situs mereka sendiri adalah ... well ... sleezy.

Yang mengatakan, saya akan menganggap untuk saat ini bahwa Anda memiliki alasan yang sah untuk mengikis konten dari lebih dari 700 situs. Dalam hal ini, saya akan merekomendasikan metode yang terpisah dan terprogram - bukan RSS. Jika Anda memiliki informasi login yang sah untuk semua situs ini (yaitu situs Anda dan bukan milik orang lain), Anda dapat menggunakan fitur XML-RPC bawaan WordPress untuk mengambil konten.

Gunakan pustaka XML-RPC bawaan untuk mengirimkan permintaan untuk metaWeblog.getRecentPostsmenentukan ID blog (biasanya 0 untuk situs tunggal, tetapi bisa berbeda di multi-situs), nama pengguna WordPress Anda, kata sandi WordPress Anda, dan jumlah posting untuk mengambil (atur ini ke -1 untuk menerima semuanya).

Situs lain akan merespons dengan file XML (yang agak besar) yang berisi konten yang dapat Anda lakukan dengan apa yang Anda inginkan. Ini semua bisa terjadi di belakang layar, dan metaWeblog.getRecentPostspermintaan akan memberi Anda lebih banyak informasi daripada umpan RSS (termasuk bidang khusus, yang mungkin penting bagi Anda).

EAMann
sumber
2

Jika ingatanku, melewati -1 karena jumlah posting memiliki efek yang sama. Namun, tidak sepenuhnya yakin bagaimana itu dilemparkan ke URL.

Selain itu, jika Anda benar-benar ingin memiliki 700+ situs, pertimbangkan untuk memiliki cron yang memperbarui atau menarik git dari cabang stabil, dari repositori pribadi setiap hari ... Dikombinasikan dengan panggilan http harian ke wp- admin / upgrade.php. Ini akan menghemat banyak kerepotan saat meningkatkan atau mengubah situs Anda - karena itu akan dilakukan secara otomatis.

Denis de Bernardy
sumber
0

Anda mungkin ingin menggunakan beberapa agregator RSS seperti FeedWordpress

mireille raad
sumber
0

Jika Anda masuk ke Pengaturan> Membaca> dan mengubah nilai dalam "Umpan sindikasi tunjukkan yang terbaru" ke nomor yang sesuai dengan Anda, itu akan muncul hingga jumlah umpan yang Anda masukkan.

vegaskevin
sumber
0

Meskipun bukan "semua posting", saya berpendapat bahwa limitparam jauh lebih berguna.

Saya akan merekomendasikan untuk langsung memfilter opsi "posts_per_rss" seperti:

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

Umpan kemudian dapat diakses seperti ini: http://example.org/category/acme/feed/?limit=999

farinspace
sumber