web-dev-qa-db-fra.com

Afficher tous les messages collants, AVEC la pagination

Essayer de faire fonctionner un lien d’administrateur personnalisé pour un type de publication personnalisé. J'ai réussi à ajouter un lien pour afficher tous les messages "collants" à côté des "Tous", "Publiés", "Corbeilles", etc., mais la requête ne fonctionne pas comme prévu.

Dans pre_get_posts, j'essaie de modifier la requête pour effectuer les opérations suivantes: - Afficher uniquement les posts collants - Respecter les paramètres posts_per_page et de pagination

Si j'essaye ceci:

$query->set('post__in',  get_option('sticky_posts'));
$query->set('posts_per_page', 5);

... Je vois tous les messages collants, mais pas de pagination. Avoir "posts__in" défini signifie-t-il que posts_per_page n'est pas pris en compte?

Merci pour l'info. Ditched "posts_per_page" mais cela n'a pas changé. Ma barre de débogage indique:

SELECT wp_posts.* FROM wp_posts WHERE 1=1 AND wp_posts.ID IN (2382,2358,2334,2331,2301,2298,2280,2262,2220,2226,2193,2157,2163,2136,2130,2109,2100,2084,2072,2026,2020,1961,1934,1846,1834,1756,1738,1709,1688,1552,1543,1498,1488,1482,1476,1438,1432,1412,1406,1400,1394,1391,1388,1358,1340,1319,1285,1282,1269,1227,1212,2621,2674,2659,3300,3313,3414,3560,3314) AND wp_posts.post_type = 'ad_listing' AND (wp_posts.post_status = 'publish') GROUP BY wp_posts.ID ORDER BY wp_posts.post_date DESC 
5

Basé sur ce post , j’ai fait ce test et je l’ai fonctionné:

$sticky = get_option( 'sticky_posts' );
$ppp = get_option('posts_per_page');

if (!is_paged()) {
    $custom_offset = 0;
} else {
    $custom_offset = $ppp*($paged-1);
}

$args = array(
    'numberposts' => $ppp,
    'offset' => $custom_offset,
    'post__in' => $sticky 
);

$posts_data = get_posts( $args );
$pd = count( $posts_data );

if ( count( $posts_data ) > 0 ) {
    echo '<ul>';
    foreach ( $posts_data as $post ) {
        echo '<li><a href="'.get_permalink( $post->ID ).'">'.$post->post_title.'</a></li>';
    }
    echo '</ul>';
} 

if ( $pd != 1 ) { next_posts_link( __( '<span class="meta-nav">&laquo;</span> P&aacute;gina anterior ', 'twentyten' ) ); }
previous_posts_link( __( 'Pr&oacute;xima p&aacute;gina <span class="meta-nav">&raquo;</span>', 'twentyten' ) );

Je l'ai testé avec les paramètres de lecture réglés sur 2 et 4 et tout semble aller pour le mieux. Voyez si cela répond à vos besoins.

1
kevin