Paginare cu 5 articole pe pagină

10 dec. 2015, 15:53:03
Vizualizări: 41.3K
Voturi: 3

Încerc să creez o listă paginată de articole și am folosit Codex-ul pentru a scrie cod, dar se pare că fac ceva greșit.

Acestea sunt argumentele mele pentru wp_query

$paged = ( get_query_var( 'paged' ) ) ? get_query_var( 'paged' ) : 1;
            $the_query = new WP_Query(
                array
                    (
                        'posts_per_page' => 5,
                        'post_type' => 'post',
                        'paged' => $paged
                    )
            );

Conținutul variabilei $paged afișează într-adevăr 1 așa cum era de așteptat

Am adăugat next_posts_link la instrucțiunea mea if dar link-urile nu se afișează.

if ( $the_query->have_posts() ) {
                previous_posts_link( '« Articole mai noi' );
                while ( $the_query->have_posts() ) {
                    $the_query->the_post();
                    echo '<div class="news-item">';
                        // conținutul articolului aici
                    echo '</div>';
                }
                next_posts_link( 'Articole mai vechi »', 0 );
            }

EDITARE

Pagina pe care se afișează acest cod nu este pagina principală, ci o pagină statică pe care am creat-o. Am creat șablonul page-news.php și apoi am creat o pagină numită 'Știri' unde se află acest cod. Ar putea fi acesta motivul?

1
Comentarii

Posibil duplicat al The next_posts_link() show me a aditional page in blank

Pieter Goosen Pieter Goosen
10 dec. 2015 17:52:16
Toate răspunsurile la întrebare 1
7

Acest lucru funcționează pentru mine pe o singură pagină folosind un șablon. Asigură-te că setezi next_posts_link( 'Articole mai vechi »', $the_query->max_num_pages );.

// setează parametrul "paged" (folosește 'page' dacă interogarea este pe o pagină frontală statică)
$paged = ( get_query_var( 'paged' ) ) ? get_query_var( 'paged' ) : '1';
$args = array (
    'nopaging'               => false,
    'paged'                  => $paged,
    'posts_per_page'         => '5',
    'post_type'              => 'post',
);

// Interogarea
$query = new WP_Query( $args );

// Bucla
if ( $query->have_posts() ) {

    previous_posts_link( '« Articole mai noi' );

    while ( $query->have_posts() ) {
        $query->the_post();
        echo '<div class="news-item">';
            // conținutul articolului aici
                echo '<h1 class="page-title screen-reader-text">' . the_title() . '</h1>';
        echo '</div>';
    }

    next_posts_link( 'Articole mai vechi »', $query->max_num_pages );

} else {
    // nu s-au găsit articole
    echo '<h1 class="page-title screen-reader-text">Nu s-au găsit articole</h1>';
}

// Restabilește datele originale ale articolului
wp_reset_postdata();
10 dec. 2015 16:47:30
Comentarii

Pagina pe care apare acest lucru nu este o pagină principală, ci o pagină statică pe care am creat-o. Am creat șablonul page-news.php și apoi am creat o pagină numită 'Știri' și acolo se află acest cod. Ar putea fi acesta motivul?

user1486133 user1486133
10 dec. 2015 16:48:21

Ce modificări ai adus codului meu? Nu găsesc modificarea.

user1486133 user1486133
10 dec. 2015 16:49:28

Testam pe pagina principală în afara buclei principale, voi testa acest lucru pe o pagină statică și îți voi spune dacă este diferit.

jgraup jgraup
10 dec. 2015 16:51:27

Deci, se pare că dispare când pui asta într-un template. Acum că am un exemplu funcțional pot testa mai departe, un moment.

jgraup jgraup
10 dec. 2015 16:54:56

Și asta face răspunsul tău diferit de al meu.....???????

Pieter Goosen Pieter Goosen
10 dec. 2015 17:00:11

@user1486133, acum funcționează perfect. Doar adaugă $the_query->max_num_pages la next_posts_link în loc de 0.

jgraup jgraup
10 dec. 2015 17:02:33

@jgraup mulțumesc, da aceasta a fost soluția corectă. Mulțumesc că ai prezentat-o și că nu ai fost condescendent pe parcurs :)

user1486133 user1486133
10 dec. 2015 17:38:49
Arată celelalte 2 comentarii