Vermeiden Sie WordPress kategorisieren eine Permalink-Anfrage als nicht gefunden 404 Seite

Ich habe überall im Internet nach etwas gesucht, was ich brauche, und ich habe nichts Ähnliches gefunden, nicht einmal ähnlich, das Ding ist folgendes:

Ich habe eine Seitenvorlage zu einem einfachen Seitenposttyp, sagen wir “Früchte”, und dann rufe ich in dieser Vorlage einen Webservice auf, der alle Früchte mit einer bestimmten Beschreibung zurückbringt, die URL davon ist www.mydomain.com/ Früchte /

Ich befülle die WordPress-database nicht mit diesen Informationen, sondern nehme sie von einem externen Dienst und möchte mit den Details im WordPress-Vorlagen-Design durch den Inhalt navigieren. Was ich also brauche, ist in der Lage zu sein, auf ‘orange’ zu klicken Link wie folgt:

www.mydomain.com/fruits/orange/ —> Dies wäre mein Permalink, der nicht registriert ist

Dieser nicht existierende Permalink leitet mich sofort zur Seite 404 Template weiter und wird im wp_query-Objekt als ‘404’ = true kategorisiert. Ich möchte vermeiden, dass wordpress es als 404 verarbeitet und zwinge es, diese Anfrage zu senden eine benutzerdefinierte Vorlage, die die Details von Orange anzeigen wird.

Bitte Wenn du irgendeine Idee hast, welchen Haken ich verwenden kann, der WP_Rewrite nicht einschließt (was ich alle Arten von Kombinationen ohne Erfolg versuchte), werde ich für immer dankbar sein.

Danke im Voraus.

Solutions Collecting From Web of "Vermeiden Sie WordPress kategorisieren eine Permalink-Anfrage als nicht gefunden 404 Seite"

Wie ich in meinem Kommentar angedeutet habe, würde ich die Rewrite-API verwenden, um dies zu handhaben, insbesondere durch Hinzufügen eines Rewrite-Endpunkts . So müssen Sie sich nicht damit auseinandersetzen, was ein tatsächliches 404 ist und was eine Anfrage für eine Ihrer dynamisch generierten Seiten ist. Es gibt Ihnen nicht genau die URL-Struktur, die Sie in Ihrer Frage haben, aber ich denke, dass es in diesem Fall ein vernünftiger Kompromiss ist.

Zuerst fügen wir den Rewrite-Endpunkt hinzu. In diesem Beispiel habe ich den type , also wären Ihre URLs /fruit/type/orange/ :

 function wpa_rewrite_endpoint(){ add_rewrite_endpoint( 'type', EP_PAGES ); } add_action( 'init', 'wpa_rewrite_endpoint' ); 

Jetzt können Sie in Ihrer Vorlage überprüfen, ob der type festgelegt wurde und Sie wissen, dass Sie dieses Keyword von Ihrem Webservice abrufen müssen:

 if( $requested_type = get_query_var( 'type' ) ){ // pass $requested_type to webservice } 

Vielleicht möchten Sie auch in die Transienten-API schauen, um die Daten lokal zwischenzuspeichern, wenn Sie viele Treffer erhalten und die zusätzlichen HTTP-Anfragen die Dinge verlangsamen.

Wenn Sie keine andere Option haben und die 404-Umleitung verwenden müssen. Sie würden template_redirect Aktionshook verwenden.

 function custom_404_redirect() { if( is_404() ) { // wp_redirect(site_url()); redirect to another page or include( get_template_directory() . '/custom-404.php' ); // use a template exit(); } } add_action( 'template_redirect', 'custom_404_redirect' );