it-swarm.com.de

Wie löse ich 404 für eine benutzerdefinierte Abfragevariable aus?

Wie kann ein 404 ausgelöst werden, wenn benutzerdefinierte Abfragevariablen verwendet werden? Ich habe Schreibregeln für eine benutzerdefinierte Abfragevariable geschrieben, aber wenn Sie eine URL für die Abfragevariable anfordern, die technisch gesehen 404 sein sollte, wird eine normale WP Seite zurückgegeben, aber kein Inhalt. weil für die URL technisch nichts existiert.

2
hsatterwhite

Hierfür gibt es eine spezielle Aktion:

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' );

Das sollte die 404.php Vorlage in dein Theme laden, wenn du sie hast. Andernfalls wird auf index.php zurückgegriffen.

Dadurch wird auch ein HTTP 404-Statuscode ausgelöst.

Weitere Informationen finden Sie unter parse_query .

8
scribu

Fügen Sie Ihrem Theme eine 404.php hinzu und prüfen Sie, ob es aufgerufen wird.

Beispiel 404.php

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

Was noch wichtiger ist: die echten HTTP-Header, hier der Statuscode. Sie können es mit den Entwicklertools Ihres Browsers unternetworkanzeigen. Hier ist ein Screenshot für http://wordpress.stackexchange.com/404 in Opera Dragonfly:

screen shot

Bild in voller Größe anzeigen

Wenn Sie immer noch einen Statuscode 200 erhalten, überprüfen Sie die globalen Variablen $wp und $wp_query. Dort erfahren Sie mehr über die abgerufene Ressource.

1
fuxia