2016-09-08 2 views
0

Ich versuche PAGINATION oder PAGING beim Abrufen aller Posts aus der Datenbank über benutzerdefinierte Abfrage zu implementieren. Ich möchte 3 Beiträge auf jeder Seite anzeigen. Logisch funktioniert es gut. Ex. Wenn ich auf die erste Seite klicke, werden 1,2,3 Posts angezeigt und wenn ich auf die zweite Seite klicke, werden 4,5,6 Posts angezeigt.Aktueller Paginierungslink ist nicht aktiv und Next, Previous funktioniert nicht

Aber Problem ist - 1. Wenn ich auf irgendeine Seitennummerverbindung wie 1 oder 2 oder 3 klicke, dann sollte jedes Mal die ausgewählte Seite aktiv sein, aber in meinem Programm ist immer die erste Seitennummerverbindung aktiv.

  1. Wenn ich auf Weiter klicke, geht es immer zur zweiten Seite. Es sollte zur nächsten Seite der aktuellen Seite gehen.

  2. Vorherige Verknüpfung wird nicht angezeigt.

    <?php 
    $per_page = 3; 
    $page = isset($_GET['cpage']) ? abs((int) $_GET['cpage']) : 0; 
    if($page>0) 
    $page = $page*$per_page-$per_page; 
    
    $querystr = " 
    SELECT $wpdb->posts.* 
    FROM $wpdb->posts, $wpdb->postmeta 
    WHERE $wpdb->posts.ID = $wpdb->postmeta.post_id 
    AND $wpdb->postmeta.meta_key = '_edit_last' 
    AND $wpdb->postmeta.meta_value = '1' 
    AND $wpdb->posts.post_status = 'publish' 
    AND $wpdb->posts.post_type = 'post' 
    AND $wpdb->posts.post_date < NOW() 
    ORDER BY $wpdb->posts.post_date DESC LIMIT $per_page offset $page"; 
    
    $pageposts = $wpdb->get_results($querystr, OBJECT); 
    ?> 
    <?php if ($pageposts): ?> 
    <?php global $post;?> 
    <?php foreach ($pageposts as $post): ?> 
    <?php setup_postdata($post);?> 
    
    <div class="post" id="post-<?php the_ID(); ?>"> 
    <h2><a href="<?php the_permalink() ?>" rel="bookmark" title="Permanent  Link to <?php the_title_attribute(); ?>"> 
    <?php the_title(); ?></a></h2> 
    <small><?php the_time('F jS, Y') ?> <!-- by <?php the_author() ?> --></small> 
    <div class="entry"> 
        <?php the_content('Read the rest of this entry »'); ?> 
    </div> 
    <p class="postmetadata">Posted in <?php the_category(', ') ?> | <?php edit_post_link('Edit', '', ' | '); ?> 
    <?php comments_popup_link('No Comments »', '1 Comment »', '% Comments »'); ?></p> 
    

PAGINATION

<?php 
$querystr2 = " 
    SELECT count(*) 
    FROM $wpdb->posts, $wpdb->postmeta 
    WHERE $wpdb->posts.ID = $wpdb->postmeta.post_id 
    AND $wpdb->postmeta.meta_key = '_edit_last' 
    AND $wpdb->postmeta.meta_value = '1' 
    AND $wpdb->posts.post_status = 'publish' 
    AND $wpdb->posts.post_type = 'post' 
    AND $wpdb->posts.post_date < NOW() 
    ORDER BY $wpdb->posts.post_date DESC 
"; 
$totalPosts = $wpdb->get_var($querystr2); 

echo paginate_links(array(
'base' => add_query_arg('cpage', '%#%'), 
    'format' => '', 
    'prev_text' => __('Previous'), 
    'next_text' => __('Next'), 
    'total' => ceil($totalPosts/$per_page), 
    'current' => $page 
)); 

?> 

Kann jemand versuchen, dieses Problem zu lösen oder Fehler in meinem Code?

Antwort

Verwandte Themen