Je sais comment récupérer le flux RSS2 d'une catégorie dans wp, à savoir en ajoutant /feed
derrière le nom de la catégorie. Cependant, lorsque je le fais, toutes les entrées de ce flux ne sont pas incluses dans le flux RSS, car je règle la restriction de flux sur 50 au niveau du serveur d'administration.
Je voudrais savoir si une longueur de fil pourrait être définie individuellement pour chaque catégorie/programme par programme.
Je n'ai trouvé aucun paramètre d'API pour la taille des flux ... toute aide est la bienvenue ici.
Merci de votre aide.
Vous devriez pouvoir utiliser pre_get_posts
et définir le posts_per_page
sur 50 de manière conditionnelle (en tant que flux pour les catégories). Malheureusement, il y a ce ticket de trac non résolu .
La seule solution consiste à accrocher le post_limits
et à remplacer directement la partie LIMIT
de la requête SQL.
add_action('post_limits','wpse71759_category_rss_limit',10,2);
function wpse71759_category_rss_limit($limit, $query){
if( $query->is_feed() && $query->is_category() ){
$paged = $query->get('paged') ? (int) $query->get('paged') : 1;
$per_page = 50;
$page_start = ($paged-1)*$per_page;
return "LIMIT $page_start, $per_page";
}
return $limit;
}
add_filter('query', 'sql_query_feed_filter');
function sql_query_feed_filter($sql){
global $wp_query;
if ($wp_query->is_feed == true && isset($wp_query->query_vars['custom_taxonomy']) && in_array($wp_query->query_vars['custom_taxonomy'], array('slug1','slug2')) ){
if (strpos($sql, 'SELECT SQL_CALC_FOUND_ROWS') !== false){
list($sql,) = explode('LIMIT', $sql);
}
}
return $sql;
}
tout ce que vous avez à faire est simplement d’éditer cette fonction et de remplacer taxonomie par votre taxonomie de catégorie et d’éditer slug à peu près votre catégorie ...