【WordPress】 パーマリンク末尾を4桁の数字にすると記事が表示されなくなる問題

サイト作成時にパーマリンクを変更し、〇〇〇.com/1234など末尾を4桁の数字に書き換えると記事が表示されなくなる問題が発生しました。
これについての記録です。

スポンサーリンク

1.何がどうした?

URLを簡略化するために〇〇〇.com/123のように数字で管理する方針で検討をしていました。

/999までは問題がありません。
しかしこれが4桁の数字になると記事が表示されなくなってしまうという問題が発生。

何をしたのかを順番に説明していくと、まずパーマリンクは「カスタム構造」としました。

4digit_url_02b-01

これで投稿ページでURLの書き換えが出来ます。

4digit_url_03b

ここを4桁の数字に書き換えると、公開された記事が存在するのに表示されないのです。

4digit_url_01

2.何が原因か

この問題にはどっぷりとハマりました。

よくよく調べてようやくわかったのですが、4桁の数字は年アーカイブで使われているため、〇〇〇.com/1234とすると西暦1234年の記事を探しに行ってしまうのです。
年アーカイブと競合していたのです。

当然1234年の記事はないので上記のような「おっと、失礼・・・」になるのです。

3.対策は?

〇〇〇.com/archive/1234など間に文字を入れるのが一番簡単です。

しかしどうしても〇〇〇.com/1234という構成にしたかったので、さらに調べてみると同じ問題がフォーラムにもあがっていました。

wordpressフォーラム
http://ja.forums.wordpress.org/topic/11003

有難いことに、ここに解決案が提示されています。
functions.phpに以下のコードを追加して年アーカイブを使えなくするという方法です。
作成していたサイトでは年アーカイブを使うことはないのでこの方法で対応しました。

●コード

function remove_year_rewrite_rules( $date_rewrite ) {
if ( $date_rewrite ) {
foreach ( $date_rewrite as $key => $query ) {
if ( ! strpos( $query, ‘&monthnum=’ ) ) {
unset( $date_rewrite[$key] );
}
}
}
return $date_rewrite;
}
add_filter( ‘date_rewrite_rules’, ‘remove_year_rewrite_rules’ );

4.まとめ

ちなみに今お読みのこのサイトの年アーカイブはhttp://affinote.net/date/2014/と「date」という文字が入っています。

パーマリンクは同じ「カスタム構造」ですが以下のように設定しています。

4digit_url_04

このようにパーマリンクの構造の指定の仕方でも変化するようです。

厄介な話ですがパーマリンクを独自に書き換えた場合、このような問題が起こる可能性があるということを覚えておきましょう。


スポンサーリンク
  • このエントリーをはてなブックマークに追加

コメントをどうぞ

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA