WordPressのパーマリンク設定で絶対にやってはいけないこと – 数字だけの記事ファイル名

DSC_2723

WordPressのパーマリンクの形を自由に設定できます。そして、絶対に設定してはいけない形があります。

404 NOT FOUND | わかったブログ
人生は、日々「わかった!」の積み重ね。成長する方法を研究するブログ。毎日走ってます。

のような、/[数字] の構造は絶対にやめましょう。

月別ページと重複する

上記のような数字だけのパーマリンクは、PostIdを利用して、パーマリンク設定でカスタム構造を「/%post_id%」に設定したり、カスタム構造を「%postname%」に設定して、Slugs or PostIDを利用すると作れます。

今後将来、インターネットのファイルの形式がずっとHTMLである保証はありません。http://www.wakatta-blog.com/1234 のような、拡張子.htmlがないリンク形は理にかなっています。

しかし、とんでもない落とし穴が待っていました。数字だけのファイル名だと、年別ページと重複する可能性があるのです。PostIDが1から999までは良いのですが、4桁、つまり1000から9999までは、WordPress側で自動的に記事を非表示する「4桁フィルター」が作動して、記事が表示されなくなってしまうのです。

2103年の月別ページと、PostIDが2013の記事が同じURL http://www.wakatta-blog.com/2013 になってしまいます。PostIDをリンクに使いたい場合は、「/1234」ではなく、「/post-1234」「/1234.html」のような形にしないといけないのです。【追記】コメント頂いたように「/post/1234」も良いですね。

PostIDが4桁なんて、そう簡単にはたどり着かないかと思うかもしれません。実はPostIdは記事数と一致しません。リビジョン数や下書き数も等もカウントするブログ全体の通し番号なので、あっという間に1000を超えてきます。

▼▼▼▼

既に設定してしまって、多くの記事をポストしてしまっている方もいると思います。ご安心ください。対策はあります。

「4桁フィルター」を無視する

年別ページを使う方ケースはほとんどありません。年別ページを今後絶対に使わないと決めて、「4桁フィルター」を無効にしてしまう方法があります。

[解決済み] 記事が見つかりませんでした を参照して、function.phpファイルにフィルターを無効にする記述をしてください。

今のPostIDから、パーマリンクを新しい形に変える

パーマリンク設定をカスタム構造「%postname%」にして、function.phpに下記のコードを記述します。

function auto_post_slug( $slug, $post_ID, $post_status, $post_type ) {
    
    $nowPostId = 1;

    if ( preg_match( '/(%[0-9a-f]{2})+/', $slug ) ||  preg_match( '/[0-9]{4}/', $slug )) {
      if($post_ID > $nowPostId) {
        $slug = 'post-' . $post_ID;
        //$slug = $post_ID . '.html';
      }
    }
    return $slug;
}
add_filter( 'wp_unique_post_slug', 'auto_post_slug', 10, 4  );

管理画面から新しい記事を「新規追加」すると、スラッグの部分がpost-***のように自動的に書き変わります。***が現在のPostIdです。

上記コードの$nowPost = 1の「1」を***の数字に書き換えて、再びfunction.phpファイルを上書きすると。この記事以降はpost-***のリンクの形で投稿できます。もちろん、スラッグを自分で書き換えることもできます。その際は英数字でスラッグを書くことになります。

過去の記事の数字が3桁以下であれば、元々問題ないのでそのまま利用して、今後の記事は4桁問題を回避できるパーマリンクにできます。

過去記事のURLを変更してしまうと、301リダイレクトで処理しないと検索エンジンからの流入が無くなってしまう上に、重複コンテンツとみなされて、最悪ペナルティを食らう可能性もあります。

ぜひお試しください。

【追記】

のような形でも問題ないという情報を頂きました。上記にもあるようにfunction.phpで対策すれば4桁フィルターは無効にできるので、利用しているテーマ側で対策がされている可能性もあります。私は自作テーマでした。

今は問題なくても、将来的に自作などの4桁問題に未対応のテーマに変更した場合に、問題が顕在化する可能性もあります。4桁問題は存在しますので。

[解決済み] 記事が見つかりませんでした

今後新しくブログを立ち上げる方は、「/%post_id%」は設定しないほうが無難かなと思います。

今日のわかった

実はクライアントさんのサイトの記事がいきなり表示されなくなって問題が発覚しました。

光速で調べて考えて対策しました。本当に超焦った(^^;;;)

WordPress
スポンサーリンク
管理人かん吉をフォローする
わかったブログ

コメント

タイトルとURLをコピーしました