Obtenez tous les messages en RSS


10

Je me demande comment / si je peux accéder à plus que les messages X les plus récents définis dans les paramètres de wordpress. J'ai vu des plugins qui migrent tout le contenu du blog via RSS, n'ont pas fouillé pour voir leurs méthodes.

Fondamentalement, je gère quelques centaines de blogs WordPress et je crée un générateur de newsletter pour mes clients. Ils veulent pouvoir sélectionner quelques articles et faire apparaître les extraits dans le corps du bulletin. Les sites sont répartis sur plusieurs serveurs et le générateur de newsletter est construit sur notre CRM, de sorte que les requêtes de base de données directes seraient difficiles. RSS serait le plus propre, mais je n'arrive pas à comprendre comment accéder à plus de 10 à la fois (lorsque 10 est défini dans l'administrateur).

Des idées?


que voulez-vous dire par "10 est défini dans l'administrateur"?
gcb

Réponses:


5

Le Codex a un exemple d'extrait sur la façon d'utiliser le post_limitsfiltre pour remplacer le montant défini dans admin pour le flux.

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
Cela peut être une option, mais j'espérais éviter d'avoir à modifier le code du thème sur plus de 700 sites.
bhamrick

1
C'est donc ce que j'ai fini par faire. Mes sites sont répartis sur une poignée d'installations WordPress-Mu, il ne s'agit donc pas littéralement de centaines d'instances différentes de WordPress sur des centaines de serveurs. Le problème était que je n'avais besoin de cette fonctionnalité que sur CERTAINS des sites de chaque installation de Mu. J'ai donc écrit un plugin qui fait cela, j'ai écrit un script qui a mis à jour la base de données pour activer ce plugin sur les sites dont j'avais besoin. Terminé. Merci pour l'aide.
bhamrick

21

Un moyen d'obtenir vos messages est d'appeler les différentes pages du flux rss dans votre générateur de newsletter. C'est une approche sûre qui ne nécessite pas de mettre à jour vos différentes installations Wordpress:

yourwebsite.com/feed -> obtenir les 10 derniers messages

yourwebsite.com/feed/ ? paged = 2 -> obtenir les 10 prochains messages

Etc.


4

Malheureusement, ce que vous essayez de faire est généralement mal vu dans la plupart des collectivités. Ce que je vous entends demander, c'est:

  • Un moyen de récupérer à distance plus que le nombre par défaut de (messages récents)
  • Récupérer éventuellement tous les articles publiés pour un site
  • Sans aucune interaction directe avec le site lui-même (via RSS)

Il s'agit d'une pratique couramment utilisée pour extraire le contenu des blogs et le republier sans l'autorisation de l'auteur d'origine. C'est pourquoi je dis que c'est généralement mal vu. La plupart des auteurs de blogs ont consacré beaucoup de temps et d'énergie à développer un excellent contenu, donc il est facile pour un tiers de tirer parti de son travail acharné pour ajouter du crédit SEO à son propre site.

Cela dit, je suppose pour le moment que vous avez des raisons légitimes de supprimer le contenu de plus de 700 sites. Dans ce cas, je recommanderais une méthode programmatique distincte - pas RSS. Si vous disposez d'informations de connexion légitimes pour tous ces sites (c'est-à-dire qu'il s'agit de vos sites et non de quelqu'un d'autre), vous pouvez utiliser les fonctionnalités XML-RPC intégrées de WordPress pour récupérer le contenu.

Utilisez la bibliothèque XML-RPC intégrée pour transmettre une demande de metaWeblog.getRecentPostsspécification de l'ID du blog (généralement 0 pour les sites uniques, mais peut être différent sur plusieurs sites), votre nom d'utilisateur WordPress, votre mot de passe WordPress et le nombre de publications à récupérer (définissez-le sur -1 pour les recevoir tous).

L'autre site répondra avec un fichier XML (assez volumineux) contenant le contenu que vous pouvez faire avec ce que vous voulez. Tout cela peut se produire dans les coulisses, et la metaWeblog.getRecentPostsdemande vous donnera beaucoup plus d'informations qu'un flux RSS (y compris des champs personnalisés, qui pourraient être importants pour vous).


2

Si la mémoire est bonne, passer -1 comme nombre de messages a le même effet. Je ne sais pas vraiment comment il est jeté dans une URL, cependant.

En passant, si vous aimez vraiment avoir plus de 700 sites, envisagez d'avoir un cron que svn met à jour ou git tire d'une branche stable, d'un dépôt privé sur une base quotidienne ... Combiné avec un appel http quotidien à wp- admin / upgrade.php. Cela vous évitera beaucoup de tracas lors de la mise à niveau ou de la modification de vos sites - en ce sens que cela se fera automatiquement.



0

Si vous allez dans Paramètres> Lecture> et changez la valeur dans "Les flux de syndication montrent le plus récent" en un nombre qui vous convient, cela s'affichera jusqu'au nombre de flux que vous entrez.


0

Bien que ce ne soit pas «tous les articles», je dirais qu'un limitparamètre est beaucoup plus utile.

Je recommanderais de filtrer directement l'option "posts_per_rss" en tant que telle:

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

Le flux peut alors être consulté comme suit: http://example.org/category/acme/feed/?limit=999

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.