6

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!

+1

Noch einmal die Permalink-Taste speichern, kann dieses Problem lösen –

+1

Blick auf meine Antwort http://stackoverflow.com/questions/22364294/pagination-on-custom-wp-query-in-wordpress-takes-to-404 -error-page/22465969 # 22465969 –

+0

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

Antwort

13

Das klingt wie Konflikt von Slug in Ihrem benutzerdefinierten Beitragstyp. Versuchen Sie, den Post-Slug in einen anderen Namen umzubenennen, und wechseln Sie erneut zu permanenten Links, um die Umschreibungsregeln zu regenerieren.

+1

Es stellte sich heraus, dass es in der Tat ein CPT/Seite Slug Konflikt war. Ich habe den gleichen Slug in meiner benutzerdefinierten Post-Type 'rewrite' -Eigenschaft und auf der Seite verwendet, auf der alle Posts von diesem benutzerdefinierten Post-Typ aufgelistet waren, und anscheinend hat das die WordPress-Abfrage-Zeichenfolge komplett durcheinander gebracht. – zok

+1

Dieser Beitrag gab mir auch gute Einblicke in das Thema: http://code.utsplus.com/tutorials/custom-post-type-pagination-chaining-method--wp-21444 – zok

+1

Gott sei Dank fand ich das, ich würde ' Ich habe nie herausgefunden, ob ich das nicht gelesen habe! – Noob17