Individual rss feed comprimento de entrada para categorias?

8

Eu sei como recuperar o feed rss2 de uma categoria em wp, adicionando /feed por trás do nome da categoria. No entanto, quando faço isso, nem todas as entradas desse feed são incluídas no rss, isso porque defini a restrição de feed como 50 no back-end do administrador.

Gostaria de saber se um comprimento de feed pode ser definido individualmente para cada categoria / feed programaticamente.

Não encontrei nenhuma configuração de API para o tamanho dos feeds ... qualquer ajuda é bem-vinda aqui.

Obrigado pela sua ajuda.

    
por mahatmanich 06.11.2012 / 20:44

2 respostas

8

Você deve poder usar pre_get_posts e definir o posts_per_page para 50 condicionalmente (em ser feed para categorias). Infelizmente há esse ticket trac não resolvido .

A solução é fazer hook em post_limits e substituir a parte LIMIT da consulta SQL diretamente.

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;
}
    
por Stephen Harris 12.11.2012 / 23:55
2
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;
}

tudo que você precisa fazer é apenas editar esta função e repalir a taxonomia de acordo com a taxonomia de sua categoria e editar o slug em sua categoria ...

    
por Butuzov 14.11.2012 / 00:01