2017-07-12 2 views
0

Ich versuche Typen zu machen Paginierung für Ergebnis von zwei Posten, den question eine benutzerdefinierte Post-Typ ist und der normale post vor allem, wenn ich alle Ergebnisse zeigen without pagination mit 'posts_per_page' => -1; die Funktion funktioniert gutWordpress wp_Query Paginierung mit benutzerdefinierten post_type Ausgabe

enter image description here

aber das Problem passieren, wenn ich versuche, Paginierung zu machen, wie Sie Paginierung Funktion arbeitet normalerweise mit Ausnahme der einige letzten Seiten der Paginierung sehen kann (ich glaube, das erscheint Frage post_type auch kürzlich erschienenen Beitrag Art von Fragen enthält normalerweise)

enter image description here

enter image description here

enter image description here

hier sind Sie meine vollständige Code

<?php 

    $my_query = new WP_Query(
     array(
      'post_type' => array('question', 'post'), 
      'posts_per_page' => get_option('to_count_portfolio'), // -1 to show all results 
      'author' => $post->post_author, 
      'paged' => get_query_var('paged') ? get_query_var('paged') : 1 
     ) 
    ); 


?> 
<?php 
    while ($my_query->have_posts()) : $my_query->the_post(); 
?> 

<span class="title"> 
    <?php echo get_post_type(); ?> 
    <a href="<?php the_permalink(); ?>"> 
    <?php the_title(); ?> 
    </a> 
</span> 
<br /> 

<?php endwhile; ?> 
<?php 
    $big = 999999999; // need an unlikely integer 
    echo paginate_links(
     array(
      'base' => str_replace($big, '%#%', get_pagenum_link($big)), 
      'format' => '?paged=%#%', 
      'current' => max(1, get_query_var('paged')), 
      'total' => $my_query->max_num_pages 
     ) 
    ); 
?> 

Wie kann ich Paginierung normal arbeiten und navigieren Sie zu allen Paginierung Links machen?

Antwort

2

Ersetzen Sie den Code folgendermaßen aus:

<?php 
    $paged = (get_query_var('paged')) ? get_query_var('paged') : 1; 
    if ($paged == "1") { 
    $args = array(
      'post_type' => array('question', 'post'), 
      'posts_per_page' => get_option('to_count_portfolio'), // -1 to show all results 
      'author' => $post->post_author, 
      'offset' => 0 
    ); 
} else { 
    $offset = $paged * 5; 
    $offset = $offset - 5; 
    $args = array(
      'post_type' => array('question', 'post'), 
      'posts_per_page' => get_option('to_count_portfolio'), // -1 to show all results 
      'author' => $post->post_author, 
      'offset' => $offset 
    ); 
} 

$loop = new WP_Query($args); 
?> 
<?php 
    if ($loop->have_posts()) :while ($loop->have_posts()) : $loop->the_post(); 
?> 

<span class="title"> 
    <?php echo get_post_type(); ?> 
    <a href="<?php the_permalink(); ?>"> 
    <?php the_title(); ?> 
    </a> 
</span> 
<br /> 

<?php endwhile; ?> 
<div class="pagination-grp"> 
    <?php 
    $big = 999999999; // need an unlikely integer 
    //$i=1; 

    echo paginate_links(array(
     'base' => str_replace($big, '%#%', esc_url(get_pagenum_link($big))), 
     'format' => '?paged=%#%', 
     'current' => max(1, get_query_var('paged')), 
     'prev_text' => __('<'), 
     'next_text' => __('>'), 
     'total' => $loop->max_num_pages 

    )); 
    wp_reset_postdata(); 
    endif; 
    ?> 
</div> 
+0

Danke @Arpan Ich ändere meinen Code mit Ihrem, aber ich immer noch gleich 404 zuletzt für die Seite –

1
install this free plugin https://wordpress.org/plugins/wp-pagenavi/ 
then refer below code 

$paged = (get_query_var('paged')) ? get_query_var('paged') : 1; 

$args = array (
    'post_type'    => 'post', 
    'cat'     => '53', 
    'paged' => $paged, 
    'posts_per_page'   => '10', 
); 

// The Query 
$query = new WP_Query($args); 

// The Loop 
if ($query->have_posts()) { 
    while ($query->have_posts()) { 
     $query->the_post(); 
     get_template_part('parts/bl`enter code here`ogloop'); 

    } 


    if(function_exists('wp_pagenavi')) 
     { 
      wp_pagenavi(array('query' => $query)); 
     } 

    wp_reset_postdata(); 

} else { 
    echo 'no posts here'; 
} 

Dies wird Paging zeigen und für Sie wie ein Zauber funktionieren.

+0

Danke @prashant, ich bevorzuge es selbst ohne extra Plugins zu machen, oder zumindest ein eigenes Plugin zu erstellen –

0

Ich denke, dass ich es heraus ist die Lösung aus dem WP_Query args zu bearbeiten, um eine benutzerdefinierten Zahl sein, die als Standort posts_per_page nicht gleich ist

'posts_per_page' => 11, // 13, or 20 ... 

statt

'posts_per_page' => get_option('to_count_portfolio'), 

Warum? Ich habe keine Ahnung, vielleicht sind die eine Art von Konflikt jemand kann es versuchen und sehen, ob diese Lösung mit ihm/ihr funktioniert wie ich

Verwandte Themen