web-dev-qa-db-fra.com

Comment déclencher 404 pour une requête personnalisée var?

Comment pouvez-vous déclencher un 404 lorsque vous utilisez des vars de requête personnalisés? J'ai des règles de réécriture écrites pour une requête personnalisée var, mais si vous demandez une URL pour la requête var qui doit techniquement être un 404, elle retourne une page normale WP, mais pas de contenu. car rien n'existe techniquement pour l'URL.

2
hsatterwhite

Il y a une action spécifiquement pour cela:

function my_parse_query( $wp_query ) {
    if ( $wp_query->get( 'my_custom_var' ) > 42 ) {
        $wp_query->set_404();
        status_header( 404 );
    }
}
add_action( 'parse_query', 'my_parse_query' );

Cela devrait charger le modèle 404.php dans votre thème, si vous en avez un. Sinon, il retombera sur index.php.

Cela déclenchera également un code d'état HTTP 404.

Pour plus d'informations, voir parse_query .

8
scribu

Ajoutez un 404.php à votre thème et regardez s'il s'appelle.

Échantillon 404.php

<!doctype>
<title>404</title>
<p>404 – Mwah!</p>

Le plus important: les vrais en-têtes HTTP, ici le code de statut. Vous pouvez le voir avec les outils de développement de vos navigateurs sousnetwork. Voici une capture d'écran pour http://wordpress.stackexchange.com/404 dans Opera Dragonfly:

screen shot

Voir l'image en taille réelle

Si vous obtenez toujours un code d'état 200, examinez les variables globales $wp et $wp_query. Ils vous donneront plus de détails sur la ressource récupérée.

1
fuxia