Comment générer un 404 par programme?
-
-
Peut-êtrepourrais-jemodifier la requêtepour rechercher unepageinexistante.Perhaps I could modify the query to search for a non-existent page.
- 0
- 2012-11-23
- dave1010
-
Pouvez-vous clarifier la questionici?Essayez-vous d'exécuter du code sur lapage 404 de votrethème ou souhaitez-vousintentionnellement créer uneerreur 404?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
-
Je veux créer un 404. Je vais éditer unpeu la question ...I want to create a 404. I'll edit the question a bit...
- 0
- 2012-11-23
- dave1010
-
dans quel cas/quandet pourquoi voulez-vousgénérer unepage 404?in which case/when and why do you want to generate a 404 page?
- 0
- 2012-11-23
- fischi
-
J'aieubesoin de lefaire à aumoins 2 occasions différentes.Plus récemment,lespages d'auteurs héritées donnaient un «404».C'est aussi quelque chose dontj'aurai certainementbesoin ànouveau dans lefutur.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 réponses
- votes
-
- 2012-11-23
function generate_404_somehow() { global $wp_query; $wp_query->is_404 = true; } add_action('wp','generate_404_somehow');
Bien sûr,celaenverra àtous votrepage vers lemodèle 404.Jene saispas dans quelles conditions cela doit se déclencher ounon.
Oupour êtreplusprudent (voir commentaires) ...
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');
-
Celafonctionnemais `$ wp_query-> set_404 ()`exécute également `$ wp_query->init_query_flags ()`,qui définittous les autresindicateurs `is_ *` surfalse.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
-
C'est vrai,maisje ne voispas lanécessité de la surcharge (trèsmineure).Je seraisintéressé de savoir s'il y a un cas où celane fonctionnepas.Jen'entrouvepas.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
-
Je doism'assurer que des choses comme `is_single ()`et `is_archive ()` retournentfalse,donctous les hooks qui les vérifient sont correctset n'ajoutentpas detrucs supplémentaires à lapage 404 (comme "Next"et "Previous" liens).Cela dépend cependant despluginset desthèmes.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
-
Je comprends lamiseen garde.Utiliser `$ wp_query-> set_404 ()` dansmafonction devrait le couvrir.Je suppose que c'est ce que vous avez décidé defaire.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
L'autre réponse de s_ha_dumne définitpas l'état de l'en-tête HTTP sur 404introuvable .Pour cefaire,ajoutez
status_header( 404 )
à lafonction.function generate_404_somehow() { global $wp_query; $wp_query->set_404(); status_header( 404 ); } add_action('wp','generate_404_somehow');
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');
-
Vouspouvezen plus ajouter `nocache_headers ()` comme vu dans [`WP :: handle_404 ()`] (https://developer.wordpress.org/reference/classes/wp/handle_404/).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
Ce qui semblefonctionner:
global $wp_query; $wp_query->set_404(); $wp_query->max_num_pages = 0; // stop theme from showing Next/Prev links
Cela semble définir lesen-têtes HTTPet charger lebonmodèle (avec
is_404()
étant vrai).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).
Commentpuis-jefairefonctionner quelque chose comme ça?
Fondamentalement,sous certaines conditions,je veux dire à WordPress d'afficher sonmodèle 404 (auquelje pourraim'accrocherplustard sije le souhaite) au lieu dumodèle qu'ilest sur lepoint de charger (parexemple unepage ou une archive).
Je sais queje pourrais simplementfaire une redirection
302
vers unepageinexistantemais c'esttrès compliqué. Jepourrais aussienvoyer unen-tête HTTP404
manuellement,maisje nepeuxpas utiliser labellepage 404 de WP (j'ai déjà des choses qui se raccordent àis_404()
qui doivent obtenirtiré aubonmoment).