Seitenumbruch funktioniert nicht auf der benutzerdefinierten Seitenvorlage

Ich habe viel darüber gesucht, aber ich kann nicht herausfinden, warum mein Code nicht funktioniert.

Ich habe eine Seite mit Slug “Blog” veröffentlicht, die eine benutzerdefinierte Vorlage “page-blog.php” verwendet, die ich aus der Bearbeitung der ursprünglichen “page.php” erstellt habe. Ich möchte die letzten Posts mit Paginierung wiederholen.

Für nummerierte Paginierung habe ich mehrere Plugins ausprobiert. Sie alle arbeiten auf Archiv- und Kategorieseiten, aber auf der Seite-blog.php bekomme ich immer das gleiche Ergebnis. Jede Seite, die ich anzeigen möchte, gibt mir einen 404-Fehler. Nur die Schleife auf der ersten Seite funktioniert.

URLs sind wie folgt:

www.mywebsite.com/blog/ (Seiten-URL, mit der ersten Seitenschleife, ok)

www.mywebsite.com/blog/page/2/ (404 Fehler)

www.mywebsite.com/blog/page/3/ (404 Fehler)

Dies ist Mein vollständiger Code von page-blog.php.

 
<article id="post-" >
<?php the_title( '

', '

' ); ?> <?php edit_post_link( __( 'Edit', 'mywebsite' ), '', '' ); ?>
'post', 'post_status' => 'publish', 'paged' => $paged, ); // The Query $news_query = new WP_Query( $args ); // Preserving main query $temp_query = $wp_query; $wp_query = NULL; $wp_query = $news_query; ?> have_posts() ) : ?> have_posts() ) : $news_query->the_post(); ?>

Solutions Collecting From Web of "Seitenumbruch funktioniert nicht auf der benutzerdefinierten Seitenvorlage"

WICHTIGES BEARBEITEN

Als ich Ihren Code getestet habe, habe ich immer den Namen der Seitenkopfzeile hinzugefügt und nie realisiert, dass dies eine Sache ist, die Sie nicht hinzugefügt haben. Sie sollten immer eine benutzerdefinierte Seitenvorlage benennen, damit WordPress weiß, dass es sich um eine Seitenvorlage handelt. Daher müssen Sie Ihre benutzerdefinierte Seitenvorlage bearbeiten und die Kopfzeile wie folgt hinzufügen

 < ?php /** * Template Name: Name of your template */ get_header(); ?> 

ORIGINAL ANTWORT

Sie müssen sich die Paginierungsparameter von WP_Query .

  • paged (int) – Anzahl der Seiten. Zeigen Sie die Posts, die normalerweise nur auf Seite X angezeigt werden, wenn Sie den Link “Ältere Einträge” verwenden.

  • page (int) – Anzahl der Seiten für eine statische Titelseite. Zeigen Sie die Posts an, die normalerweise nur auf Seite X einer statischen Vorderseite angezeigt werden.

Wenn Sie diese Seitenvorlage als Startseite festlegen, funktioniert Ihr Code ordnungsgemäß und paginiert wie gewünscht. Wenn Sie diese Seitenvorlage jedoch als Post / Blog-Seite verwenden, müssen Sie dies ändern

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

zu

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

Beachten Sie, dass das von Ihnen verwendete Plugin ( WP Paginate ) seit mehr als zwei Jahren nicht aktualisiert wurde. Obwohl es immer noch funktioniert, würde ich empfehlen, dass Sie sich andere Plugins ansehen, die auf dem neuesten Stand sind, um Probleme später zu vermeiden.

Alternativ können Sie diese function für die Paginierung verwenden. Wer der ursprüngliche Autor ist, bin ich nicht sicher, aber wer auch immer du mein Freund bist, der Kredit geht an dich.

Der folgende Code geht in functions.php

 if ( ! function_exists( 'pietergoosen_pagination' ) ) : function pietergoosen_pagination($pages = '', $range = 2) { $showitems = ($range * 2)+1; global $paged; if(empty($paged)) $paged = 1; if($pages == '') { global $wp_query; $pages = $wp_query->max_num_pages; if(!$pages) { $pages = 1; } } if(1 != $pages) { $string = _x( 'Page %1$s of %2$s' , '%1$s = current page, %2$s = all pages' , 'pietergoosen' ); echo "\n"; } } // pietergoosen_pagination endif; 

Sie können die Seitennummerierung in Ihrer Vorlage wie folgt aufrufen

  < ?php pietergoosen_pagination(); ?> 

BEARBEITEN

Soweit ich von Ihrem Kommentar zu der anderen Antwort erfahren kann

Ich möchte nicht, dass diese Seite meine Homepage ist. Ich habe eine andere Vorlage für meine Homepage. Ich möchte nur, dass es funktioniert und Beiträge unter der URL http://www.mywebsite.com/blog/ auflistet

Sie haben Ihre Blog-Seite als “Posts page:” in “Reading Settings” und eine andere Seite als “Front page:” eingestellt. Wenn dies der Fall ist, wird index.php als Ihre Posts-Seite und nicht als benutzerdefinierte Seitenvorlage verwendet.

Es gibt eine schnelle Möglichkeit zu überprüfen, welche Vorlage von der angezeigten Seite verwendet wird. Fügen Sie einfach den folgenden Code in Ihre functions.php ein (von hier )

 add_action('wp_head', 'show_template'); function show_template() { global $template; print_r($template); } 

BEARBEITEN 2

Hier ist eine meiner modifizierten Vorlagen. Bitte testen Sie es und sehen Sie, wie es funktioniert. Wenn das nicht funktioniert, dann weiß ich es nicht. Haben Sie Ihre Vorlage auf so viele Arten wie möglich getestet, und ich kann es nicht scheitern, wie Sie beschreiben

 < ?php /** * Template Name: Test Page 3 */ get_header(); ?> 
>
< ?php the_title( '

', '' ); ?> < ?php edit_post_link( __( 'Edit', 'mywebsite' ), '', '' ); ?>

< ?php the_content(); ?>
< ?php global $post; $tmp_post = $post; $paged = ( get_query_var('paged') ) ? get_query_var('paged') : 1; $args = array ( 'post_type' => 'post', 'post_status' => 'publish', 'paged' => $paged, ); $wp_query= null; $wp_query = new WP_Query(); $wp_query->query( $args ); if ( $wp_query->have_posts() ) : while ( $wp_query->have_posts() ) : $wp_query->the_post(); get_template_part( 'content', get_post_format() ); endwhile; if(function_exists('wp_paginate')) { wp_paginate(); } else get_template_part( 'content', 'none' ); endif; $post = $tmp_post; if ( comments_open() || get_comments_number() ) { comments_template(); } ?>
< ?php get_sidebar(); ?>
< ?php get_footer();

Haben Sie die Blog-Seite im Lesen als Post-Seite eingestellt, wenn ja, dann machen Sie bitte eine Vorlage mit dem Namen home und setzen Sie den obigen Code in Ihre Home-Vorlage.

hoffe das hilft dir.

Aus meiner Sicht versuchen Sie, eine Seitennummerierung auf einer Seite vorzunehmen, was auch bedeuten kann, dass wordpress die page / paged var paged hat. Dies kann einfach getriggers werden, indem ein Filter hinzugefügt wird, der eine benutzerdefinierte vars-Seite hinzufügt

 add_filter('query_vars', function( $vars ){ //!!SUPER IMPORTANT!! - always *APPEND* $vars array (NOT re-assign) $vars[] = 'page'; $vars[] = 'paged'; //!!SUPER IMPORTANT!! - always return $vars return $vars; }); 

SIE MÜSSEN REWRITE-REGELN AUFNEHMEN! – Am einfachsten gehen Sie zu Ihrem Admin> Einstellungen> Permalinks => und klicken Sie auf Speichern (Änderungen)

Wenn Sie immer noch 404 erhalten, möchten Sie vielleicht Ihre benutzerdefinierte Rewrite-Regel hinzufügen – aktualisieren Sie nach jeder Änderung die Rewrite-Regeln wie zuvor erwähnt …