WordPressのカスタムパーマリンクのURL末尾の1が消える現象に対処
2018年07月17日
WordPressで、カスタムパーマリンクを使っていて、以下のようなことを実現しようとしていました。
パーマリンクを使ってURLを作成し、以下のようなURLのページがあったとします。
http://example.com/test/
このページに /test/ ディレクトリ以下に、数字の /1/というURLを付加し、パラメータとして処理をしようとしました。
http://example.com/test/1
上記のようなURLにして、数字の1を取り出して、プログラム内で処理しようとしていました。
しかし、いざ実行してみると・・・
http://example.com/test/1
とアドレスバーに入力すると
http://example.com/test/
にリダイレクトされてしまうという現象が・・・・
何故?
ちなみに
http://example.com/test/2
とアドレスバーに入力すると、問題なく表示される。
何で2は通るのに1が駄目・・・?
ということで、問題に対処するために、
WordPressのソースコードに
echo $_SERVER[‘REQUEST_URI’];
を処理開始部分から追記していって、URLがどこで変化しているかを調べてみました。
すると、最初の段階では
http://example.com/test/1
と画面上に出力されていました。
それが、どこで変化しているのか・・・
結論としては
/wp-includes/template-loader.php内の
do_action( ‘template_redirect’ );
この処理の後で、
http://example.com/test/1 → http://example.com/test/
にURLが変化していました。
そして、上記の処理(do_action( ‘template_redirect’ );)をコメントアウトしてみたところ、
http://example.com/test/1
きちんと処理されるようになりました。
この処理を飛ばすとサイトの表示に問題が起きるわけでもなく。
というわけで、調査の結果としては以上となりました。