webentwicklung-frage-antwort-db.com.de

wordpress Static Page Paginierung

Ich benutze eine Post-Abfrage in WordPress, ABER die Paginierung funktioniert nicht, ich weiß nicht, was das Problem ist, ABER hier ist mein Code und ich denke, es ist richtig und kein Problem damit

es zeigt, dass es Seiten gibt, aber wenn ich auf Nächste Seite klicke, wird die Seite aktualisiert und es werden keine neuen Ergebnisse angezeigt, nur die gleiche Seite.

Ich benutze es auf der statischen Seite, um die Startseite meines Themas zu sein

<?php

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

$post_query = query_posts(array(
    'post_type'      => 'cover', // You can add a custom post type if you like
    'paged'          => $paged,
    'posts_per_page' => 1
));

?>

<?php if ( have_posts() ) : ?>

<?php
while ( have_posts() ) : the_post(); 
?>

<?php endwhile; ?>

///Pagination Function in Functions.php
<?php my_pagination(); ?>

<?php else: ?>

    No Results

<?php endif; ?>

Paginierungsfunktion

if ( ! function_exists( 'my_pagination' ) ) :
    function my_pagination() {
        global $wp_query;

        $big = 999999999; // need an unlikely integer

        echo paginate_links( array(
            'base' => str_replace( $big, '%#%', esc_url( get_pagenum_link( $big ) ) ),
            'format' => '?paged=%#%',
            'current' => max( 1, get_query_var('paged') ),
            'total' => $wp_query->max_num_pages
        ) );
    }
endif;
2
Youssef Subehi

Diese Lösung muss überarbeitet werden, damit die Paginierungsfunktionen in functions.php verfügbar sind.

Ich benutze das Reverie Master Theme (welches das Foundation Framework benutzt), dieses Theme benutzt die Paginierungsfunktion welche in functions.php ist

if( ! function_exists( 'reverie_pagination' ) ) {
function reverie_pagination() {
    global $wp_query;

    $big = 999999999; // This needs to be an unlikely integer

    // For more options and info view the docs for paginate_links()
    // http://codex.wordpress.org/Function_Reference/paginate_links
    $paginate_links = paginate_links( array(
        'base' => str_replace( $big, '%#%', get_pagenum_link($big) ),
        'current' => max( 1, get_query_var('paged') ),
        'total' => $wp_query->max_num_pages,
        'mid_size' => 5,
        'prev_next' => True,
        'prev_text' => __('&laquo;'),
        'next_text' => __('&raquo;'),
        'type' => 'list'
    ) );

    // Display the pagination if more than one page is found
    if ( $paginate_links ) {
        echo '<div class="pagination-centered">';
        echo $paginate_links;
        echo '</div><!--// end .pagination -->';
        }
    }
}

Ich habe diese Funktion als überarbeitet

    if( ! function_exists( 'reverie_pagination' ) ) {
    function reverie_pagination() {
        global $wp_query, $another_query;

        $big = 999999999; // This needs to be an unlikely integer
        if ( is_front_page()) {
            $myqueryis = $another_query;
            $paged = ( get_query_var('page') ) ? get_query_var('page') : 1;
            } else {
            $myqueryis = $wp_query;
            $paged = get_query_var('paged');
            }
        // For more options and info view the docs for paginate_links()
        // http://codex.wordpress.org/Function_Reference/paginate_links
        $paginate_links = paginate_links( array(
            'base' => str_replace( $big, '%#%', get_pagenum_link($big) ),
            'current' => max( 1, $paged ),
            'total' => $myqueryis->max_num_pages,
            'mid_size' => 5,
            'prev_next' => True,
            'prev_text' => __('&laquo;'),
            'next_text' => __('&raquo;'),
            'type' => 'list'
        ) );

        // Display the pagination if more than one page is found
        if ( $paginate_links ) {
            echo '<div class="pagination-centered">';
            echo $paginate_links;
            echo '</div><!--// end .pagination -->';
        }
    }
}

die Variable $ another_query ist meine benutzerdefinierte WP_Query. Der Autor dieser Frage verwendete * query_posts *, um Ergebnisse zu erhalten, aber ich habe * new WP_Query * verwendet.

Und die Abfrage, die ich innerhalb der Titelseite verwendet habe, ist;

 $args =  array(
            'post_type' => 'post',  
            'post__not_in'   => $do_not_duplicate,
        'paged' => $paged,
            );
 $another_query = new WP_Query( $args );
1
ewroman

Wenn Sie mehrere Schleifen auf derselben Seite haben (z. B. in front_page), wird die Paginierung manchmal unterbrochen.

Ich habe das Problem mit demselben Abfragenamen gelöst. Aus dem obigen Beispiel haben wir $myqueryis = $another_query; und in der Funktion 'total' => $myqueryis->max_num_pages, verwendet, und ich habe auch die Abfrageargs und die Abfrage wie folgt angegeben.

$args =  array(
    'post_type' => 'post',  
    'post__not_in'   => $do_not_duplicate,
    'paged' => $paged,
        );
 $another_query = new WP_Query( $args );

mit zweitem das schleifenbeispiel

$secondargs =  array(
        'post_type' => 'post',  
        'post__not_in'   => $do_not_duplicate,
        'paged' => $paged,
        'posts_per_page' => 2,  // for testing purpose to see if pagination works properly
            );
 $another_query = new WP_Query( $secondargs );

und vielleicht mit dem dritten Beispiel der Schleife

$thirdargs =  array(
        'post_type' => 'post',  
        'post__not_in'   => $do_not_duplicate,
        'paged' => $paged,
        'posts_per_page' => 5,  // for testing purpose to see if pagination works properly
            );
 $another_query = new WP_Query( $thirdargs );

dies funktioniert ordnungsgemäß für Seite/1 Seite/2 Seite/...

0
ewroman