it-swarm.com.de

Einzelne RSS-Feed-Eintragslänge für Kategorien?

Ich kann den RSS2-Feed aus einer Kategorie in WP abrufen, indem ich /feed hinter dem Kategorienamen hinzufüge. In diesem Fall sind jedoch nicht alle Einträge aus diesem Feed im RSS enthalten. Dies liegt daran, dass ich die Feed-Einschränkung im Administrator-Backend auf 50 festgelegt habe.

Ich würde gerne wissen, ob eine Feedlänge für jede Kategorie/jeden Feed programmgesteuert individuell eingestellt werden kann.

Ich konnte keine API-Einstellungen für die Größe der Feeds finden. Jede Hilfe ist hier willkommen.

Danke für Ihre Hilfe.

9
mahatmanich

Sie sollten in der Lage sein, pre_get_posts zu verwenden und den posts_per_page bedingt auf 50 zu setzen (wenn Sie Feed für Kategorien sind). Leider gibt es dieses ungelöste Trac-Ticket .

Die einzige Abhilfe besteht darin, sich in post_limits einzuhängen und den Teil LIMIT der SQL-Abfrage direkt zu ersetzen.

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

alles, was Sie tun müssen, ist, diese Funktion zu bearbeiten und die Taxonomie durch die Taxonomie Ihrer Kategorie zu ersetzen.

2
Butuzov