RSS의 모든 게시물 가져 오기


10

워드 프레스 설정에 정의 된 최신 X 개 이상의 게시물에 어떻게 액세스 할 수 있는지 궁금합니다. RSS를 통해 모든 블로그 컨텐츠를 마이그레이션하는 플러그인을 보았지만 그 방법을 보려고 애 쓰지 않았습니다.

기본적으로 저는 수백 개의 WordPress 블로그를 관리하고 있으며 고객을위한 뉴스 레터 생성기를 만들고 있습니다. 그들은 몇 개의 게시물을 선택하고 발췌문이 뉴스 레터 본문에 나타나기를 원합니다. 사이트는 여러 서버에 분산되어 있으며 뉴스 레터 생성기는 CRM을 기반으로 구축되므로 데이터베이스 직접 쿼리가 어려울 수 있습니다. RSS가 가장 깨끗하지만 한 번에 10 개 이상에 액세스하는 방법을 알 수없는 것 같습니다 (관리자가 10을 설정 한 경우).

어떤 아이디어?


"관리자에서 10이 설정되었습니다"는 무슨 뜻입니까?
gcb

답변:


5

Codex에는 post_limits필터를 사용 하여 피드에서 관리자가 설정 한 금액을 재정의 하는 방법에 대한 예제 스 니펫 이 있습니다.

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
이것은 옵션 일 수 있지만 700 개 이상의 사이트에서 테마 코드를 수정하지 않기를 바랐습니다.
bhamrick

1
그래서 이것이 내가 한 일입니다. 내 사이트는 소수의 WordPress-Mu 설치에 분산되어 있으므로 수백 대의 서버에서 문자 그대로 수백 개의 다른 WordPress 인스턴스가 아닙니다. 문제는 각 Mu 설치 내의 일부 사이트에서만이 기능이 필요하다는 것입니다. 그래서이 작업을 수행하는 플러그인을 작성하고 필요한 사이트에서 해당 플러그인을 활성화하기 위해 데이터베이스를 업데이트하는 스크립트를 작성했습니다. 끝난. 도와 주셔서 감사합니다.
bhamrick

21

게시물을 얻는 방법은 뉴스 레터 생성기에서 RSS 피드의 다른 페이지를 호출하는 것입니다. 다양한 Wordpress 설치를 업데이트 할 필요가없는 안전한 접근 방식입니다.

yourwebsite.com/feed- > 최근 10 개의 게시물 가져 오기

yourwebsite.com/feed/ ? paged = 2- > 다음 10 개의 게시물 가져 오기

등등.


4

불행히도, 당신이하려는 것은 일반적으로 대부분의 지역 사회에서 찡그린 것입니다. 내가 당신이 요구하는 것은 :

  • 기본 수 (최근 게시물) 이상을 원격으로 검색하는 방법
  • 사이트에 게시 된 모든 게시물을 검색 할 수 있습니다.
  • 사이트 자체와 직접 상호 작용하지 않고 (RSS 사용)

블로그에서 콘텐츠를 긁어내어 원래 작성자의 허가없이 다시 게시하는 데 일반적으로 사용됩니다. 그렇기 때문에 일반적으로 눈살을 찌푸리게됩니다. 대부분의 블로그 작성자는 훌륭한 콘텐츠를 개발하는 데 많은 시간과 노력을 들였으므로 제 3자가 자신의 사이트에 SEO 크레딧을 추가하기 위해 자신의 노력을 활용하는 것이 쉬워졌습니다.

즉, 700 개 이상의 사이트에서 콘텐츠를 스크랩하는 데 합당한 이유가 있다고 생각합니다. 이 경우 RSS가 아닌 별도의 프로그래밍 방식을 권장합니다. 이러한 모든 사이트에 대한 합법적 인 로그인 정보가있는 경우 (예 : 다른 사이트가 아닌 사이트 임) WordPress 내장 XML-RPC 기능을 사용하여 컨텐츠를 가져올 수 있습니다.

기본 제공 XML-RPC 라이브러리를 사용 metaWeblog.getRecentPosts하여 블로그 ID (일반적으로 단일 사이트의 경우 0이지만 다중 사이트에서는 다를 수 있음), WordPress 사용자 이름, WordPress 비밀번호 및 게시물 수 를 지정 하라는 요청을 전달 하십시오. 가져 오려면 (이 값을 모두 -1로 설정)

다른 사이트는 원하는 내용으로 수행 할 수있는 내용이 포함 된 XML 파일로 응답합니다. 이 모든 것이 뒤에서 일어날 수 있으며 metaWeblog.getRecentPosts요청은 RSS 피드보다 훨씬 더 많은 정보를 제공합니다 (사용자 정의 필드를 포함하여 중요 할 수 있음).


2

메모리가 작동하는 경우 게시물 수로 -1을 전달하면 동일한 효과가 있습니다. 그래도 어떻게 URL에 던져 지는지 확실하지 않습니다.

따로, 실제로 700 개 이상의 사이트를 보유하고 있다면 svn 업데이트 또는 git이 안정적인 브랜치에서 매일 개인 저장소에서 매일 가져 오는 cron을 사용하는 것이 좋습니다 ... wp-에 대한 매일 http 호출과 결합 admin / upgrade.php. 사이트를 업그레이드하거나 조정할 때 많은 번거 로움을 덜어줍니다. 자동으로 완료됩니다.



0

설정> 읽기>로 이동하여 "신디케이션 피드가 가장 최근으로 표시됨"의 값을 자신에게 적합한 숫자로 변경하면 입력 한 피드 수까지 표시됩니다.


0

"모든 게시물"이 아니지만 limit매개 변수가 훨씬 유용 하다고 주장 합니다.

"posts_per_rss"옵션을 다음과 같이 직접 필터링하는 것이 좋습니다.

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

다음과 같이 피드에 액세스 할 수 있습니다. http://example.org/category/acme/feed/?limit=999

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.