実に7か月半ぶりのエントリーです。公開に至らない、下書き記事はたくさんあるんですよ。備忘録として使ってるんで、下書きで満足なんですよね。少しずつ、記事にしていこうとは思っています。

さて、リクエストしたURLは、user_trailingslashitという関数によって、末尾のスラッシュ(トレイリングスラッシュ)が付けられたり、取られたりします。これは設定されたパーマリンク構造によるものです。末尾がスラッシュで終わっていれば強制的に付けられるし、そうでなければ取り除かれます。
これをリクエストしたURLのままにするというのが今回の目的です。

redirect_canonicalというフックを使います。(wp-includes/canonical.php)
コードはとても簡単です。1つ目の引数$redirect_urluser_trailingslashitが実行された後のURLが、2つ目の引数$requested_urlはリクエストされたURLが格納されています。
後者の引数をそのまま返してあげる。ただそれだけです。

function mytheme_redirect_canonical( $redirect_url, $requested_url ) {
	return $requested_url;
}
add_filter( 'redirect_canonical', 'mytheme_redirect_canonical', 10, 2 );