web-dev-qa-db-fra.com

Comment changer la quantité de flux dans le type de message personnalisé?

J'ai créé un type de message personnalisé "podcast" et tous les podcasts sont à l'intérieur. Lorsque je visite http://example.com/?feed=podcast, il ne montre que les 10 derniers podcasts. Comment puis-je le changer à 99?

J'ai googlé et trouvé le code ci-dessous:

function feedFilter($query) {
if (is_feed()) {
    $query->set('posts_per_page','30');
}
return $query;}
add_filter('pre_get_posts', 'feedFilter');

Ça ne marche pas.

Comment personnaliser la quantité d'éléments d'alimentation dans un type d'article personnalisé?

2
kakadong

Le fichier où l'action pre_get_posts est exécutée est wp-includes/query.php. Si nous regardons dans ce fichier, nous verrons que après l'action , le paramètre posts_per_page est remplacé pour les flux avec ce bit de code:

if ( $this->is_feed ) {
    $q['posts_per_page'] = get_option('posts_per_rss');
    $q['nopaging'] = false;
}

Dans ce cas, nous pouvons ajouter un filtre à la valeur posts_per_rss pour personnaliser la quantité de charge de cette manière.

function feed_action( $query ){
    if( $query->is_feed( 'podcast' ) ) {
        add_filter( 'option_posts_per_rss', 'feed_posts' );
    }
}
add_action( 'pre_get_posts', 'feed_action' );

function feed_posts(){
    return 99;
}
2
Milo

Vous pouvez utiliser le filtre post_limits pour les flux ou depuis le backend, vous devriez être capable de gérer le nombre de publications pour le flux:

enter image description here

Il suffit de changer le nombre de messages dans le Syndication feeds que vous voulez obtenir.

2
sven

votre code est presque correct. J'ai modifié quelque peu.



function feedFilter($query) {
   if (is_feed()) {
     $query->set('posts_per_page','30');
   }
}
add_action('pre_get_posts', 'feedFilter');

Ci-dessus devrait fonctionner

1
shahpranaf