web-dev-qa-db-fra.com

Longueur individuelle des entrées de flux rss pour les catégories?

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.

9
mahatmanich

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;
}
8
Stephen Harris
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 ...

2
Butuzov