Obter todas as postagens em RSS


10

Gostaria de saber como / se posso acessar mais do que os posts mais recentes do X definidos nas configurações do wordpress. Eu já vi plugins que migram todo o conteúdo do blog por RSS, e não procuramos por métodos.

Basicamente, gerencio algumas centenas de blogs WordPress e estou criando um gerador de boletins para meus clientes. Eles querem poder selecionar algumas postagens e exibir os trechos no corpo do boletim. Os sites estão espalhados por vários servidores e o gerador de boletins está sendo construído sobre o nosso CRM, portanto, as consultas diretas ao banco de dados seriam difíceis. O RSS seria o mais limpo, mas não consigo descobrir como acessar mais de 10 por vez (quando 10 é definido no administrador).

Alguma ideia?


o que você quer dizer com "10 está definido no administrador"?
precisa saber é

Respostas:


5

O Codex tem um exemplo de trecho de como usar o post_limitsfiltro para substituir a quantidade definida em admin para o feed.

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


11
Essa pode ser uma opção, mas eu esperava evitar modificar o código de tema em mais de 700 sites.
bhamrick

11
Então foi isso que acabei fazendo. Meus sites estão espalhados por um punhado de instalações do WordPress-Mu, por isso não são literalmente centenas de instâncias diferentes do WordPress em centenas de servidores. O problema era que eu precisava dessa funcionalidade apenas em alguns sites dentro de cada instalação do Mu. Então, eu escrevi um plugin que faz isso, escrevi um script que atualizou o banco de dados para ativar esse plugin nos sites que eu precisava. Feito. Obrigado pela ajuda.
bhamrick

21

Uma maneira de obter suas postagens é chamar as diferentes páginas do feed RSS no seu gerador de boletins. É uma abordagem segura que não requer a atualização de várias instalações do Wordpress:

yourwebsite.com/feed -> obtenha as últimas 10 postagens

yourwebsite.com/feed/ ? paged = 2 -> obtenha as próximas 10 postagens

E assim por diante.


4

Infelizmente, o que você está tentando fazer geralmente é desaprovado na maioria das comunidades. O que eu ouço você pedindo é:

  • Uma maneira de recuperar remotamente mais do que o número padrão de (postagens recentes)
  • Possivelmente recuperar todas as postagens publicadas para um site
  • Sem ter nenhuma interação direta com o próprio site (usando RSS)

Essa é uma prática comumente usada para copiar conteúdo de blogs e republicá-lo sem a permissão do autor original. É por isso que digo que geralmente é desaprovado. A maioria dos autores de blog dedica muito tempo e energia ao desenvolvimento de ótimos conteúdos, facilitando o aproveitamento de seu trabalho árduo por terceiros para adicionar crédito de SEO ao seu próprio site ... bem ... sonolento.

Dito isso, presumo que você tenha razões legítimas para copiar conteúdo de mais de 700 sites. Nesse caso, eu recomendaria um método programático separado - não o RSS. Se você tiver informações de login legítimas para todos esses sites (ou seja, são seus sites e não de outra pessoa), poderá usar os recursos XML-RPC internos do WordPress para buscar o conteúdo.

Use a biblioteca XML-RPC interna para passar uma solicitação para metaWeblog.getRecentPostsespecificar o ID do blog (geralmente 0 para sites únicos, mas pode ser diferente em vários sites), seu nome de usuário do WordPress, sua senha do WordPress e o número de postagens para buscar (defina-o como -1 para receber todos eles).

O outro site responderá com um arquivo XML (bastante grande) contendo o conteúdo que você pode fazer com o que deseja. Tudo isso pode acontecer nos bastidores, e a metaWeblog.getRecentPostssolicitação fornecerá muito mais informações do que um feed RSS (incluindo campos personalizados, que podem ser importantes para você).


2

Se a memória servir, passar -1 como o número de postagens tem o mesmo efeito. No entanto, não tenho certeza de como é lançada em um URL.

Além disso, se você realmente tem mais de 700 sites, considere ter um cron que svn atualiza ou git pull de um ramo estável, de um repositório privado diariamente ... Combinado com uma chamada http diária para wp- admin / upgrade.php. Isso poupará muitos aborrecimentos ao atualizar ou ajustar seus sites - pois isso será feito automaticamente.



0

Se você acessar Configurações> Leitura> e alterar o valor em "Os feeds de distribuição mostram os mais recentes" para um número que combina com você, ele será exibido com o número de feeds inseridos.


0

Embora não seja "todas as postagens", eu argumentaria que um limitparâmetro é muito mais útil.

Eu recomendaria filtrar diretamente a opção "posts_per_rss" da seguinte forma:

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

O feed pode ser acessado da seguinte forma: http://example.org/category/acme/feed/?limit=999

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.