Wenn ich auf einen Seitenumbruch Link in meinem benutzerdefinierten Beitrag Typ "funktioniert" Liste der Beiträge (oder geben Sie eine URL wie "mysite.com/works/page/2"), bekomme ich die 404 Seite.WordPress benutzerdefinierte Beitragstyp Seitenumbruch Links zurück 404
Regelmäßige Post-Typ Seitenumbruch (Blog) funktioniert ordnungsgemäß. Außerdem scheint alles andere in Bezug auf meinen benutzerdefinierten Beitragstyp "funktioniert" gut zu funktionieren.
My template-works.php Datei hat das:
get_home_pagination();
$args = array('post_type' => 'works', 'posts_per_page' => 10, 'paged' => $paged); $wp_query = new WP_Query($args);
if ($wp_query->have_posts()) :
while ($wp_query->have_posts()) : $wp_query->the_post(); get_template_part('loop', 'works'); endwhile;
else : _e('Nothing here.'); endif;
Der gleiche Code (die Post-Typ, natürlich ersetzen) wird in der Vorlage-blog.php verwendet, wo Paginierung Links korrekt funktionieren.
Und dann in functions.php habe ich bekam:
function get_home_pagination() {
global $paged, $wp_query, $wp; $args = wp_parse_args($wp->matched_query);
if (!empty ($args['paged']) && 0 == $paged) {
$wp_query->set('paged', $args['paged']); $paged = $args['paged'];
} }
Einen Moment lang dachte ich, dass geschah, weil Wordpress keine Post innerhalb der Schleife finden konnte: es die Post-ID zu erhalten, wenn andere Es gab keinen Post, wie in Zeile 29 von post-template.php. Aber dann habe ich folgendes bemerkt:
Wenn ich zum Beispiel die URL "(...)/blog/page/456" eintippe, wird die Blogvorlage mit der Meldung "Nothing here" geladen. Keine 404-Fehlerseite.
Auf der anderen Seite endet die URL "works/page/2", von der ich einige Posts zurücksende, auf einer 404-Fehlerseite.
Warum?
EDIT:
Auf der 404-Seite habe ich auch diesen Fehler:
Trying to get property of non-object in (…)/wordpress/wp-includes/post-template.php on the line 29.
... aber es könnte nicht auf die Paginierung Problem in Zusammenhang stehen. Ich habe geschafft, den Code zu entfernen, der diesen Fehler verursacht (von einem Plug-in, das ich anpasste), und die Paginierung funktioniert immer noch nicht.
EDIT:
Das ist, was ich mit dem Debuggen der URL bekam mysite.com/trabalhos/pagina/2 mit der Debug dieses Plug-in. Es scheint sehr falsch zu sein:
Obs: trabalhos = Werke, pagina = Seite
Matched Rule: trabalhos/([^/]+)(/[0-9]+)?/?$
Matched Query: works=pagina&page=%2F2
Query String: page=%2F2&name=pagina&post_type=works&works=pagina&debug-this=rewrites
In meinem Verständnis, die URL mysite.com/trabalhos/pagina/2 auf den Punkt sollte URL folgende (außer es funktioniert nicht - aber wenn ich 'trabalhos' mit 'noticias' ersetzen - mein slug für 'Blog' - es funktioniert):
mysite.com/trabalhos/pagina/2/?pagename=trabalhos
jedoch die URL mysite.com/trabalhos/pagina/2 Punkte auf diese seltsame url:
mysite.com/trabalhos/pagina/2?page=%2F2&works=pagina&post_type=works&name=pagina
Und überraschend, dass die folgende URL genau auf die Inhalte, die ich erwartet hatte, das heißt, Seite 2 von Arbeiten (trabalhos):
mysite.com/noticias/pagina/2/?pagename=trabalhos
Ich bin in der Nähe der Lösung ... aber ich habe versucht, alle Plug-Ins zu deaktivieren, fast alle Theme PHP-Code entfernen, jedes Mal die permalinks Einstellungen im Admin-Panel unter anderem zurückgesetzt, und der Fehler bleibt bestehen.
Ist es eine Fehlkonfiguration? Wo könnte es sein?
Vielen Dank im Voraus für jede Hilfe!
Noch einmal die Permalink-Taste speichern, kann dieses Problem lösen –
Blick auf meine Antwort http://stackoverflow.com/questions/22364294/pagination-on-custom-wp-query-in-wordpress-takes-to-404 -error-page/22465969 # 22465969 –
Ich habe ein Plug-in verwendet, um die Abfrage und das Neuschreiben zu debuggen. Die übereinstimmende Abfrage und die Abfragezeichenfolge für den Link zur Arbeitspaginierung ist augenscheinlich durcheinander, und die übereinstimmende Regel scheint falsch zu sein. Ich bin schon seit einiger Zeit und kann es nicht herausfinden. Das sind viele Informationen, die in einen Kommentar eingefügt werden sollen. Ich könnte meinen Beitrag bearbeiten, aber rate mir, ich könnte besser einen neuen Thread starten ... – zok