Obtén todas las publicaciones en RSS


10

Me pregunto cómo / si puedo acceder a más de las publicaciones X más recientes definidas en la configuración de WordPress. He visto complementos que migran todo el contenido del blog a través de RSS, no han hurgado para ver sus métodos.

Básicamente administro un par de cientos de blogs de WordPress y estoy creando un generador de boletines para mis clientes. Quieren poder seleccionar algunas publicaciones y que los extractos aparezcan en el cuerpo del boletín. Los sitios están distribuidos en varios servidores y el generador de boletines se está construyendo sobre nuestro CRM, por lo que las consultas directas a la base de datos serían difíciles. RSS sería el más limpio, pero parece que no puedo entender cómo acceder a más de 10 a la vez (cuando 10 está configurado en el administrador).

¿Algunas ideas?


¿Qué quieres decir con "10 está configurado en el administrador"?
gcb

Respuestas:


5

El Codex tiene un fragmento de ejemplo sobre cómo usar el post_limitsfiltro para anular la cantidad establecida en el administrador para el 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


1
Esta puede ser una opción, pero esperaba evitar tener que modificar el código del tema en más de 700 sitios.
bhamrick

1
Entonces esto es lo que terminé haciendo. Mis sitios están distribuidos en un puñado de instalaciones de WordPress-Mu, por lo que no son literalmente cientos de instancias diferentes de WordPress en cientos de servidores. El problema era que necesitaba esta funcionalidad solo en ALGUNOS de los sitios dentro de cada instalación de Mu. Entonces escribí un complemento que hace esto, escribí un script que actualizó la base de datos para activar ese complemento en los sitios que necesitaba. Hecho. Gracias por la ayuda.
bhamrick

21

Una forma de obtener sus publicaciones es llamar a las diferentes páginas del feed RSS en su generador de boletines. Es un enfoque seguro que no requiere actualizar sus diversas instalaciones de Wordpress:

yourwebsite.com/feed -> obtenga las últimas 10 publicaciones

yourwebsite.com/feed/ ? paged = 2 -> obtenga las siguientes 10 publicaciones

Y así.


4

Desafortunadamente, lo que intenta hacer generalmente está mal visto en la mayoría de las comunidades. Lo que te oigo preguntar es:

  • Una forma de recuperar de forma remota más que el número predeterminado de (publicaciones recientes)
  • Posiblemente recupere todas las publicaciones publicadas para un sitio
  • Sin tener ninguna interacción directa con el sitio en sí (usando RSS)

Esta es una práctica comúnmente utilizada para extraer contenido de blogs y volver a publicarlo sin el permiso del autor original. Por eso digo que generalmente está mal visto. La mayoría de los autores de blogs dedican mucho tiempo y energía a desarrollar contenido excelente, por lo que hacer que sea fácil para un tercero aprovechar su arduo trabajo para agregar crédito SEO a su propio sitio es ... bueno ... elegante.

Dicho esto, supondré por el momento que tiene razones legítimas para extraer contenido de más de 700 sitios. En ese caso, recomendaría un método programático separado, no RSS. Si tiene información de inicio de sesión legítima para todos estos sitios (es decir, son sus sitios y no los de otra persona), puede usar las funciones incorporadas de WordPress XML-RPC para obtener el contenido.

Use la biblioteca XML-RPC incorporada para pasar una solicitud para metaWeblog.getRecentPostsespecificar la ID del blog (generalmente 0 para sitios individuales, pero podría ser diferente en sitios múltiples), su nombre de usuario de WordPress, su contraseña de WordPress y la cantidad de publicaciones para buscar (establezca esto en -1 para recibirlos a todos).

El otro sitio responderá con un archivo XML (bastante grande) que contiene el contenido que puede hacer con lo que desea. Todo esto puede suceder detrás de escena, y la metaWeblog.getRecentPostssolicitud le dará mucha más información que una fuente RSS (incluidos los campos personalizados, que pueden ser importantes para usted).


2

Si la memoria sirve, pasar -1 como número de publicaciones tiene el mismo efecto. Sin embargo, no estoy completamente seguro de cómo se arroja a una URL.

Por otro lado, si realmente desea tener más de 700 sitios, considere tener un cron que se actualice o git extraiga de una rama estable, de un repositorio privado a diario ... Combinado con una llamada http diaria a wp- admin / upgrade.php. Le ahorrará muchas molestias al actualizar o ajustar sus sitios, ya que se realizará automáticamente.



0

Si va a Configuración> Lectura> y cambia el valor en "Los feeds de sindicación muestran los más recientes" a un número que le convenga, se mostrará el número de feeds que ingresó.


0

Si bien no es "todas las publicaciones", diría que un limitparámetro es mucho más útil.

Recomendaría filtrar directamente la opción "posts_per_rss" como tal:

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

Se podría acceder al feed de esta manera: http://example.org/category/acme/feed/?limit=999

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.