¿Longitud de entrada de feed rss individual para categorías?

9

Sé cómo recuperar el feed rss2 de una categoría en wp, es decir, agregar /feeddetrás del nombre de la categoría. Sin embargo, cuando hago esto, no todas las entradas de ese feed se incluyen en el rss, esto se debe a que configuré la restricción del feed en 50 en el backend de administración.

Me gustaría saber si la longitud de un feed se puede establecer individualmente para cada categoría / feed programáticamente.

No pude encontrar ninguna configuración de API para el tamaño de los feeds ... cualquier ayuda es bienvenida aquí.

Gracias por tu ayuda.

mahatmanich
fuente
Stephen Harris y CodeMonkey, ¿las respuestas no funcionan para una categoría en particular? De lo contrario, ambas respuestas funcionan, ¡funcionan para mí! ¿Por qué podría ser que solo no funciona para una categoría?
mahatmanich

Respuestas:

8

Usted debe ser capaz de utilizar pre_get_postsy establecer el posts_per_page50 condicionalmente (en ser alimento para las categorías). Lamentablemente, existe este ticket de trácco sin resolver .

La única solución es conectar post_limitsy reemplazar la LIMITparte de la consulta SQL directamente.

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;
}
Stephen Harris
fuente
Hola Stephen, investigaré eso, uhm, en realidad siempre quiero todas las entradas de una categoría en un feed, y solo en mi página de blog quiero una restricción del límite que establecí en el backend, ¿cómo lo haría?
mahatmanich
En ese caso, en return "";lugar de "LIMIT $page_start, $per_page"hacerlo.
Stephen Harris el
Oye, ¿puedes explicar tu código un poco? No estoy muy seguro de si eso es lo que quiero lo que está ofreciendo aquí.
mahatmanich
Entonces, para los feeds de categoría, desea devolver todas las publicaciones, por lo que no desea una LIMITparte de su consulta. El filtro anterior le permite reemplazar la LIMITparte con una cadena en blanco, para que el sql resultante recupere todas las publicaciones.
Stephen Harris el
1
Sí, pero recomendaría hacer un complemento ( wpcandy.com/teaches/how-to-create-a-functionality-plugin )
Stephen Harris
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;
}

todo lo que necesita hacer es editar esta función y volver a clasificar la taxonomía por su taxonomía de categoría y editar la babosa en gran parte de su categoría ...

Oleg Butuzov
fuente
¿Te gustaría explicar tu código?
mahatmanich
Filtro de consulta SQL simple que se activa en el feed ($ wp_query-> is_feed == true) si se encuentra una taxonomía específica ($ wp_query-> query_vars ['custom_taxonomy'] custom_taxonomy en el ejemplo) y si es equivalente a alguna babosa ($ wp_query-> query_vars ['custom_taxonomy'] == 'slug'). si todo esto sucede y es cierto (en un sitio.com/your-custom-feed-for-category.xml) no obtendrá resultados de límite en su feed ($ SQL declaración dividida por el valor LIMIT que significa que regresó sin el último LIMIT operador ... sin límite. todas las entradas por rss.)
Oleg Butuzov
¿Dónde dejaría caer ese código? funciones.php de mi tema?
mahatmanich
functions.php encaja perfectamente. pero cambie la babosa y el nombre de la taxonomía personalizada antes. y borre la memoria caché del navegador antes de realizar la prueba (RSS alimenta un caché por navegador).
Oleg Butuzov
Hola, gracias por el aviso con el caché Que tipo de obras, pero todavía en al menos una categoría no voy a conseguir todas las entradas en el, en los demás funciona ...
mahatmanich