Je me demande comment/si je peux accéder à plus que les derniers posts X définis dans les paramètres de wordpress. J'ai vu des plugins migrer tout le contenu d'un blog via RSS, sans avoir fouillé pour voir leurs méthodes.
En gros, je gère quelques centaines de blogs WordPress et je construis un générateur de newsletter pour mes clients. Ils veulent pouvoir sélectionner quelques articles et faire en sorte que les extraits apparaissent dans le corps de la lettre d'information. Les sites sont répartis sur plusieurs serveurs et le générateur de newsletter est construit sur notre CRM, ce qui rend les requêtes directes dans la base de données 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'admin).
Des idées?
Le codex contient un exemple de code expliquant comment utiliser le filtre post_limits
pour remplacer la quantité définie 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
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.
Malheureusement, ce que vous essayez de faire est généralement mal vu dans la plupart des communautés. Ce que je vous entends demander, c'est:
Il s'agit d'une pratique couramment utilisée pour extraire du contenu de blogs et le republier sans l'autorisation de l'auteur original. C'est pourquoi je dis que c'est généralement mal vu. La plupart des auteurs de blogs consacrent beaucoup de temps et d'énergie à la création d'un contenu de qualité. Il est donc très 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 le RSS. Si vous possédez des informations de connexion légitimes pour tous ces sites (c’est-à-dire vos sites et non ceux 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 à metaWeblog.getRecentPosts
en spécifiant l'ID du blog (généralement 0 pour des sites uniques, mais peut être différent pour plusieurs sites), votre nom d'utilisateur WordPress, votre mot de passe WordPress et le nombre de messages à récupérer (définissez-le sur -1 pour les recevoir tous).
L’autre site répondra avec un fichier XML (plutôt volumineux) contenant le contenu que vous pouvez créer avec ce que vous voulez. Tout cela peut arriver en coulisse, et la requête metaWeblog.getRecentPosts
vous donnera beaucoup plus d'informations qu'un flux RSS (y compris les champs personnalisés, qui peuvent être importants pour vous).
Si la mémoire est utile, passer -1 comme nombre de messages a le même effet. Pas tout à fait sûr de savoir comment il est jeté dans une URL, cependant.
Soit dit en passant, si vous avez vraiment plus de 700 sites, pensez à un cron que svn met à jour ou que git tire d'une branche stable, d'un dépôt privé quotidiennement ... Combiné à un appel http quotidien à wp- admin/upgrade.php. Cela vous évitera beaucoup de tracas lors de la mise à niveau ou du peaufinage de vos sites - en ce sens que tout sera fait automatiquement.
Bien que n'étant pas "tous les messages", je dirais qu'un paramètre limit
est beaucoup plus utile.
Je recommanderais directement de filtrer 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 pourrait alors être consulté comme suit: http://example.org/category/acme/feed/?limit=999
vous voudrez peut-être utiliser un agrégateur RSS comme FeedWordpress
Si vous accédez à Paramètres> Lecture> et modifiez la valeur dans l'option "Les flux de syndication affichent les plus récents" en un nombre qui vous convient, le nombre de flux que vous avez entré s'affiche.