Nhận tất cả các bài viết trong RSS


10

Tôi tự hỏi làm thế nào / nếu tôi có thể truy cập nhiều hơn các bài đăng X gần đây nhất được xác định trong cài đặt wordpress. Tôi đã thấy các plugin di chuyển tất cả nội dung blog thông qua RSS, chưa chọc vào để xem các phương thức của chúng.

Về cơ bản, tôi quản lý vài trăm blog WordPress và tôi đang xây dựng một trình tạo bản tin cho khách hàng của mình. Họ muốn có thể chọn một vài bài đăng và có các đoạn trích xuất hiện trong phần bản tin. Các trang web được trải rộng trên nhiều máy chủ và trình tạo bản tin đang được xây dựng dựa trên CRM của chúng tôi, vì vậy các truy vấn cơ sở dữ liệu trực tiếp sẽ khó khăn. RSS sẽ là sạch nhất, nhưng dường như tôi không thể tìm ra cách truy cập nhiều hơn 10 lần một lúc (khi 10 được đặt trong quản trị viên).

Có ý kiến ​​gì không?


Ý bạn là gì khi "10 được đặt trong quản trị viên"?
gcb

Câu trả lời:


5

Codex có đoạn trích ví dụ về cách sử dụng post_limitsbộ lọc để ghi đè số lượng được đặt trong quản trị viên cho nguồn cấp dữ liệ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
Đây có thể là một tùy chọn, nhưng tôi đã hy vọng tránh phải sửa đổi mã chủ đề trên hơn 700 trang web.
bhamrick

1
Vì vậy, đây là những gì tôi đã làm. Các trang web của tôi trải đều trên một số lượng cài đặt WordPress-Mu, do đó, nó không thực sự là hàng trăm trường hợp khác nhau của WordPress trên hàng trăm máy chủ. Vấn đề là tôi cần chức năng này chỉ trên MỘT SỐ trang web trong mỗi lần cài đặt Mu. Vì vậy, tôi đã viết một plugin thực hiện điều này, đã viết một kịch bản cập nhật cơ sở dữ liệu để kích hoạt plugin đó trên các trang web tôi cần. Làm xong. Cảm ơn đã giúp đỡ.
bhamrick

21

Một cách để có được bài viết của bạn là gọi các trang khác nhau của nguồn cấp dữ liệu rss trong trình tạo bản tin của bạn. Đó là một cách tiếp cận an toàn không yêu cầu cập nhật các bản cài đặt Wordpress khác nhau của bạn:

yourwebsite.com/feed -> nhận 10 bài đăng cuối cùng

yourwebsite.com/feed/ ? paged = 2 -> nhận 10 bài đăng tiếp theo

Và như thế.


4

Thật không may, những gì bạn đang cố gắng làm thường được tán thành trong hầu hết các cộng đồng. Những gì tôi nghe bạn yêu cầu là:

  • Một cách để truy xuất từ ​​xa nhiều hơn số lượng mặc định (bài viết gần đây)
  • Có thể lấy tất cả các bài đăng được xuất bản cho một trang web
  • Không có bất kỳ tương tác trực tiếp nào với chính trang web (sử dụng RSS)

Đây là một thực tế thường được sử dụng để cạo nội dung từ blog và xuất bản lại mà không có sự cho phép của tác giả ban đầu. Đó là lý do tại sao tôi nói nó thường cau mày. Hầu hết các tác giả blog dành rất nhiều thời gian và năng lượng để phát triển nội dung tuyệt vời, do đó, việc giúp bên thứ ba dễ dàng tận dụng công việc khó khăn của họ để thêm tín dụng SEO vào trang web của riêng họ là ... tốt ...

Điều đó nói rằng, tôi sẽ cho rằng hiện tại bạn có lý do chính đáng để loại bỏ nội dung từ hơn 700 trang web. Trong trường hợp đó, tôi muốn giới thiệu một phương pháp lập trình riêng biệt - không phải RSS. Nếu bạn có thông tin đăng nhập hợp pháp cho tất cả các trang web này (tức là chúng là trang web của bạn chứ không phải của người khác), bạn có thể sử dụng các tính năng XML-RPC tích hợp của WordPress để tìm nạp nội dung.

Sử dụng thư viện XML-RPC tích hợp để chuyển yêu cầu metaWeblog.getRecentPostschỉ định ID của blog (thường là 0 cho các trang web đơn lẻ, nhưng có thể khác nhau trong nhiều trang web), tên người dùng WordPress, mật khẩu WordPress của bạn và số lượng bài đăng để tìm nạp (đặt cái này thành -1 để nhận tất cả).

Trang web khác sẽ phản hồi với tệp XML (khá lớn) có chứa nội dung mà bạn có thể làm với những gì bạn muốn. Tất cả điều này có thể xảy ra đằng sau hậu trường và metaWeblog.getRecentPostsyêu cầu sẽ cung cấp cho bạn nhiều thông tin hơn nguồn cấp RSS (bao gồm các trường tùy chỉnh, có thể quan trọng đối với bạn).


2

Nếu bộ nhớ phục vụ, vượt qua -1 vì số lượng bài viết có tác dụng tương tự. Tuy nhiên, không hoàn toàn chắc chắn làm thế nào nó được ném vào một URL.

Bên cạnh đó, nếu bạn thực sự có hơn 700 trang web, hãy xem xét việc có một cron mà svn cập nhật hoặc git lấy từ một chi nhánh ổn định, từ một kho lưu trữ riêng trên cơ sở hàng ngày ... Kết hợp với một cuộc gọi http hàng ngày đến wp- quản trị / nâng cấp.php. Nó sẽ giúp bạn tiết kiệm rất nhiều rắc rối khi nâng cấp hoặc điều chỉnh các trang web của bạn - theo đó nó sẽ được thực hiện tự động.


0

bạn có thể muốn sử dụng một số trình tổng hợp RSS như FeedWordpress


0

Nếu bạn đi tới Cài đặt> Đọc> và thay đổi giá trị trong "Nguồn cấp dữ liệu hiển thị gần đây nhất" thành số phù hợp với bạn, nó sẽ hiển thị tối đa số lượng nguồn cấp bạn nhập.


0

Mặc dù không phải là "tất cả bài viết", tôi cho rằng một limitparam hữu ích hơn nhiều.

Tôi sẽ khuyên bạn nên lọc trực tiếp tùy chọn "Post_per_rss" như sau:

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

Nguồn cấp dữ liệu sau đó có thể được truy cập như vậy: http://example.org/carget/acme/feed/?limit=999

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.