Wie generiere ich programmgesteuert einen 404?
-
-
Vielleicht könnteich die Abfrage ändern,umnacheinernichtexistierenden Seite zu suchen.Perhaps I could modify the query to search for a non-existent page.
- 0
- 2012-11-23
- dave1010
-
Können Sie die Frage hier klären?Versuchen Sie,Code auf der 404-Seite Ihres Themas auszuführen,odermöchten Sie absichtlicheinen 404-Fehlererstellen?Can you clarify the question here? Are you trying to run code on your theme's 404 page or do you intentionally want to create a 404 error?
- 0
- 2012-11-23
- Steve
-
Ichmöchteeine 404erstellen. Ich werde die Frageein wenigbearbeiten ...I want to create a 404. I'll edit the question a bit...
- 0
- 2012-11-23
- dave1010
-
In welchem Fall/wann und warummöchten Sieeine 404-Seiteerstellen?in which case/when and why do you want to generate a 404 page?
- 0
- 2012-11-23
- fischi
-
Ichmusste diesbei mindestens zwei verschiedenen Gelegenheitentun.Zuletzt wurdefür ältere Autorenseitenein "404" vergeben.Ichbin mir auch sicher,dassichesin Zukunft wiederbrauchen werde.I've needed to do this on at least 2 different occasions. Most recently was making legacy author pages give a `404`. It's also something that I'm sure I'll need again in the future.
- 0
- 2012-11-26
- dave1010
-
3 Antworten
- Stimmen
-
- 2012-11-23
function generate_404_somehow() { global $wp_query; $wp_query->is_404 = true; } add_action('wp','generate_404_somehow');
Damit wirdnatürlich Ihregesamte Seite an die 404-Vorlagegesendet.Ich weißnicht,unter welchen Bedingungen dies ausgelöst werden soll odernicht.
Oder um vorsichtiger zu sein (siehe Kommentare) ...
function generate_404_somehow() { global $wp_query; $wp_query->set_404(); } add_action('wp','generate_404_somehow');
function generate_404_somehow() { global $wp_query; $wp_query->is_404 = true; } add_action('wp','generate_404_somehow');
Of course, that will send all of you page to the 404 template. I don't know what the conditions are that this should fire or not fire.
Or to be more cautious (see comments) ...
function generate_404_somehow() { global $wp_query; $wp_query->set_404(); } add_action('wp','generate_404_somehow');
-
Diesfunktioniert,aber `$ wp_query-> set_404 ()`führt auch `$ wp_query->init_query_flags ()` aus,wodurch alle anderen `is_ *` Flags auffalsegesetzt werden.This works but `$wp_query->set_404()` also runs `$wp_query->init_query_flags()`, which sets all the other `is_*` flags to false.
- 0
- 2012-11-23
- dave1010
-
Stimmt,aberich sehe keine Notwendigkeitfür den (sehrgeringen) Overhead.Es würdemichinteressieren,obeseinen Fallgibt,in dem diesnichtfunktioniert.Ich kann keinenfinden.True, but I don't see the need for the (very minor) overhead. I would be interested to know if there is a case where this doesn't work. I can't find one.
- 0
- 2012-11-23
- s_ha_dum
-
Ichmuss sicherstellen,dass Dinge wie "is_single ()" und "is_archive ()"false zurückgeben,damit alle Hooks,die sie überprüfen,korrekt sind und der 404-Seite kein zusätzliches Material hinzufügen (wie "Weiter" und "Zurück""Links).Dies hängtjedoch von Plugins und Themes ab.I need to make sure that things like `is_single()` and `is_archive()` return false, so any hooks that check them are correct and don't add extra stuff to the 404 page (like the "Next" and "Previous" links). This depends on plugins and themes though.
- 0
- 2012-11-23
- dave1010
-
Ich verstehe die Vorsicht.Die Verwendung von $ wp_query-> set_404 ()in meiner Funktion sollte dies abdecken.Ichgehe davon aus,dass Sie sich dazuentschlossen haben.I understand the caution. Using `$wp_query->set_404()` inside my function should cover it. I assume that that is what you decided to do.
- 1
- 2012-11-23
- s_ha_dum
-
- 2019-08-01
Die andere Antwort von s_ha_dum setzt den HTTP-Header-Statusnicht auf 404 Not Found .Dazu wird der Funktion
status_header( 404 )
hinzugefügt.function generate_404_somehow() { global $wp_query; $wp_query->set_404(); status_header( 404 ); } add_action('wp','generate_404_somehow');
- MDN-Webdokument: 404nichtgefunden
The other by s_ha_dum answers doesn't set the HTTP Header Status to 404 Not Found. To do this adds
status_header( 404 )
to the function.function generate_404_somehow() { global $wp_query; $wp_query->set_404(); status_header( 404 ); } add_action('wp','generate_404_somehow');
-
Sie können zusätzlich `nocache_headers ()` hinzufügen,wiein [`WP :: handle_404 ()`] (https://developer.wordpress.org/reference/classes/wp/handle_404/) zu sehen.You could additionally add `nocache_headers()` as seen in [`WP::handle_404()`](https://developer.wordpress.org/reference/classes/wp/handle_404/).
- 0
- 2019-08-01
- Nicolai
-
- 2012-11-23
Was scheint zufunktionieren:
global $wp_query; $wp_query->set_404(); $wp_query->max_num_pages = 0; // stop theme from showing Next/Prev links
Dies scheint die HTTP-Headerfestzulegen und die richtige Vorlage zu laden (wobei
is_404()
trueist).What seems to work:
global $wp_query; $wp_query->set_404(); $wp_query->max_num_pages = 0; // stop theme from showing Next/Prev links
This seems to set the HTTP headers and load the right template (with
is_404()
being true).
Wie kannich soetwas zum Laufenbringen?
Grundsätzlichmöchteich WordPress unterbestimmten Bedingungen anweisen,die 404-Vorlage (dieich spätereinbinden kann,wennichmöchte) anstelle der Vorlage anzuzeigen,diegeradegeladen wird (z. B.eine Seite oderein Archiv).
Ich weiß,ich könnteeinfacheine
302
-Umleitung zueinernicht vorhandenen Seite durchführen,aber dasist sehr chaotisch. Ich könnte auchmanuelleinen404
HTTP-Header senden,aber dann kannich die schöne 404-Seite von WPnicht verwenden (ich habebereits Dinge,dieinis_404()
eingebunden sind,die abgerufen werdenmüssen zur richtigen Zeitgefeuert).