Obtener todas las entradas en RSS

1 dic 2010, 18:57:36
Vistas: 35.6K
Votos: 12

Me pregunto cómo/si puedo acceder a más que las X entradas más recientes definidas en la configuración de WordPress. He visto plugins que migran todo el contenido del blog a través de RSS, pero no he investigado sus métodos.

Básicamente, administro cientos de blogs de WordPress y estoy creando un generador de boletines para mis clientes. Quieren poder seleccionar algunas entradas y que los extractos aparezcan en el cuerpo del boletín. Los sitios están distribuidos en múltiples 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 la forma más limpia, pero no logro descubrir cómo acceder a más de 10 a la vez (cuando 10 está establecido en el panel de administración).

¿Alguna idea?

1
Comentarios

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

gcb gcb
21 abr 2011 00:37:58
Todas las respuestas a la pregunta 7
1
27

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

tusitio.com/feed -> obtiene las últimas 10 publicaciones

tusitio.com/feed/?paged=2 -> obtiene las siguientes 10 publicaciones

Y así sucesivamente.

20 ene 2011 11:52:53
Comentarios

¡Esto! Realmente útil para muchos casos de uso.

Alim Özdemir Alim Özdemir
9 sept 2022 14:03:16
2

El Codex tiene un fragmento de ejemplo sobre cómo usar el filtro post_limits 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 dic 2010 20:37:05
Comentarios

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

bhamrick bhamrick
1 dic 2010 21:35:43

Así que esto es lo que terminé haciendo. Mis sitios están distribuidos en un puñado de instalaciones WordPress-Mu, así 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 Mu. Así que escribí un plugin que hace esto, escribí un script que actualizaba la base de datos para activar ese plugin en los sitios que necesitaba. Hecho. Gracias por la ayuda.

bhamrick bhamrick
3 dic 2010 02:46:29
0

Desafortunadamente, lo que estás intentando hacer generalmente está mal visto en la mayoría de las comunidades. Lo que entiendo que estás pidiendo es:

  • Una forma de recuperar de forma remota más que el número predeterminado de (publicaciones recientes)
  • Posiblemente recuperar todas las publicaciones publicadas de 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 republicarlo 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 esfuerzo a desarrollar contenido excelente, por lo que facilitar que un tercero aproveche su trabajo duro para agregar crédito SEO a su propio sitio es... bueno... poco ético.

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

Usa la biblioteca XML-RPC integrada para enviar una solicitud a metaWeblog.getRecentPosts especificando el ID del blog (generalmente 0 para sitios individuales, pero podría ser diferente en multisitio), tu nombre de usuario de WordPress, tu contraseña de WordPress y el número de publicaciones a recuperar (establece esto en -1 para recibirlas todas).

El otro sitio responderá con un archivo XML (bastante grande) que contiene el contenido que puedes hacer con lo que quieras. Todo esto puede suceder detrás de escena, y la solicitud metaWeblog.getRecentPosts te dará mucha más información que un feed RSS (incluidos campos personalizados, que podrían ser importantes para ti).

3 dic 2010 00:25:12
0

Aunque no son "todas las publicaciones", diría que un parámetro limit es mucho más útil.

Recomendaría filtrar directamente la opción "posts_per_rss" de la siguiente manera:

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

Luego se podría acceder al feed así: http://example.org/category/acme/feed/?limit=999

13 mar 2019 19:28:11
0

Si no me falla la memoria, pasar -1 como número de publicaciones tiene el mismo efecto. Aunque no estoy del todo seguro de cómo se incluye en una URL.

Como comentario aparte, si realmente te interesa tener más de 700 sitios, considera configurar un cron que actualice mediante svn o haga un git pull desde una rama estable, desde un repositorio privado de forma diaria... Combinado con una llamada HTTP diaria a wp-admin/upgrade.php. Te ahorrará muchos dolores de cabeza al actualizar o ajustar tus sitios, ya que se hará automáticamente.

1 dic 2010 22:49:47
0

puedes querer usar algún agregador RSS como FeedWordpress

2 dic 2010 21:21:17
0

Si vas a Ajustes > Lectura > y cambias el valor en "Los feeds de sindicación muestran los más recientes" a un número que se adapte a tus necesidades, mostrará hasta la cantidad de feeds que ingreses.

16 feb 2012 00:30:40