web-dev-qa-db-ja.com

カスタムクエリvarに対して404をトリガーする方法

カスタムクエリ変数を使用しているときにどのように404をトリガーできますか?カスタムのクエリ変数用にルールを書き直すことにしましたが、技術的には404のはずのクエリ変数のURLをリクエストすると、通常のWPページが返されますが、コンテンツは返されません。技術的にはURLには何も存在しないためです。

2
hsatterwhite

これに対する具体的なアクションがあります。

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

あなたがそれを持っていれば、それはあなたのテーマに404.phpテンプレートをロードするはずです。そうでなければ、index.phpにフォールバックします。

これはHTTP 404ステータスコードも引き起こします。

詳しくは、 parse_query を参照してください。

8
scribu

あなたのテーマに404.phpを追加し、それが呼ばれるかどうか見てください。

サンプル404.php

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

もっと重要なのは、本物のHTTPヘッダ、ここではステータスコードです。あなたはそれをネットワークの下のあなたのブラウザ開発者ツールで見ることができます。これはOpera Dragonflyのhttp://wordpress.stackexchange.com/404のスクリーンショットです。

screen shot

フルサイズの画像を見る

それでもステータスコード200が表示される場合は、グローバル変数$wp$wp_queryを調べてください。それらは取得したリソースについての詳細をあなたに教えてくれるでしょう。

1
fuxia