カスタムクエリ変数を使用しているときにどのように404をトリガーできますか?カスタムのクエリ変数用にルールを書き直すことにしましたが、技術的には404のはずのクエリ変数のURLをリクエストすると、通常のWPページが返されますが、コンテンツは返されません。技術的にはURLには何も存在しないためです。
これに対する具体的なアクションがあります。
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 を参照してください。
あなたのテーマに404.phpを追加し、それが呼ばれるかどうか見てください。
<!doctype>
<title>404</title>
<p>404 – Mwah!</p>
もっと重要なのは、本物のHTTPヘッダ、ここではステータスコードです。あなたはそれをネットワークの下のあなたのブラウザ開発者ツールで見ることができます。これはOpera Dragonflyのhttp://wordpress.stackexchange.com/404
のスクリーンショットです。
それでもステータスコード200が表示される場合は、グローバル変数$wp
と$wp_query
を調べてください。それらは取得したリソースについての詳細をあなたに教えてくれるでしょう。