こちらのブログではパーマリンクを「%post_id%」にして、URLが数字になるようにしています。
ですが、通常通り記事を書いていると、この「POST ID」がどんどん増えていき、記事のURLが連番にならず、公開している記事のURLに欠番が生じます。
一番の原因とその状況
どんどん増える一番の原因は「リビジョン」です。
記事を書き「下書き保存」すると、内容に変更があった分が新しい「POST ID」で保存されます。
記事を書いている途中、もし「下書き保存する前の状態に戻したい!」という事態が起これば便利な機能ですが、そのようなことがない場合は「POST ID」が増える(1記事で10回下書き保存したとすると、同じ記事で11個のIDを消費)=データベースの容量を圧迫する=記事が連番にならない、ということになります。
これは、このブログのある記事の例ですが、記事を書きながら「下書き保存」を繰り返していると、「13件のリビジョン」となりました。
そこで「phpMyAdmin」を見てみると、このように同じタイトルでIDがどんどん増えています。(13件あるので、次ページにもまだまだ続いていました)
右側には元記事ではなく「リビジョン」であることも記載されています。
私の場合は、普段記事を書いていても下書き保存する前の状態に戻したいということがないのと、記事のURLを欠番のない連番にすることが優先なので、このリビジョン機能自体と、同じくIDが増える原因となる自動保存機能を無効にしています。
※「phpMyAdmin」にはご利用のレンタルサーバーの管理画面からアクセスできます
エックスサーバーでの例はこちら
WordPressでパーマリンク(ブログのURL)の「%post_id%(数字)」の桁数を揃える方法
※画面上部の「表示」タブから、記事のID一覧を確認することができます
IDが増えるのを防ぐ
ご利用のレンタルサーバーの「ファイルマネージャー」などの機能か、WinSCP(オススメです!)などのソフトを使って、WordPressのファイルにコードを直接書き込む必要があります。
WordPressのデータをパソコンにも保存して、カスタマイズやバックアップをする方法(WinSCPの使い方)
リビジョン機能を無効にする
書き込むファイルは一番上の階層にある「wp-config.php」ファイルです。
「wp-config.php」ファイルを開き、下の方へスクロールすると、
define( 'WP_DEBUG', false );
という行があると思います。
その下に、次のコードを追加するだけです。(他のコードを消してしまったりしないようにご注意ください)
/** リビジョンを無効にする */
define('WP_POST_REVISIONS', false);
イメージとしてはこちら
これでファイルを上書き保存しておくと、リビジョン機能自体が無効になり、記事の投稿画面にも「リビジョン」の項目が表示されなくなります。
自動保存機能を無効にする
次に書き込むファイルはテーマフォルダの中にある「functions.php」ファイルです。
一番上の階層から「wp-content」→「themes」→「利用しているテーマ名」と開くと「functions.php」ファイルがあります。
それを開き、今度は一番下に、次のコードを書き込みます。
/** 自動保存を無効にする */
function autosave_off() {
wp_deregister_script('autosave');
}
add_action( 'wp_print_scripts', 'autosave_off' );
イメージとしてはこちら
※本来は「子テーマ」に「functions.php」ファイルを作って書き込むといいのですが、私の環境ではそうするとブログ自体が読み込めなくなってしまうため「親テーマ」の「functions.php」ファイルに書き込んでいます。
その場合、テーマのアップデートがある度にこの作業が必要になります。
どちらのファイルに書き込む場合でも、上書き保存したあとにブログが正しく表示されるか確認してみてください。
増えたIDを削除して欠番を埋める
リビジョン機能や自動保存機能を無効にしても、これまでに増えたIDが消えることはありません。
記事が完成したら、間違っても元記事のIDを削除しないように気を付けながら「リビジョン」や「自動保存」で増えたIDを手動で「削除」する必要があります。
そして、ただ削除しても欠番は埋まりません。
次に記事を作成するときは、一度使ったIDの次の数字からIDがふられることになります。
今回の例でいくと、元記事は「100128」なので、次の記事は「100129」にしたいのですが、「リビジョン」や「自動保存」で「10145」までIDが使われていました。
このままだと、次に「新規投稿」するとIDは「100146」になります。
そこで、次に使う番号を「100129」に戻す必要があります。
同じく「phpMyAdmin」で、「操作」のタブを選択します。
こちらの画像の④の部分の数字を次のIDにしたい「100129」に修正し「実行」します。
これで、次に「新規投稿」したときは④に入力した数字で「%post_id%」が作成することができます。
IDが増える原因はまだある!
ここまでしても、まだIDは増えてしまいます。
その正体は記事を書くと必ず保存される「自動下書き」です。
このように「100140」の記事を書いたときに何度も「下書き保存」をしましたが、リビジョン機能を停止したおかげで下書き分のIDは増えていません。
ですが「自動保存」を無効にするコード(別の機能?もしくは機能していない?)を入れても「自動下書き」という機能が働き、IDが増えます。
これを防ぐ方法が見つからないため、記事を書く度に先ほどの「増えたIDを削除して欠番を埋める」方法で「自動下書き」のIDを消して「操作」タブに最小値を入れ直すのは面倒です。
アナログな対処策
その対処策として「操作」タブで最小値を入れた直後にWordPressに戻り、まだ次の記事を書く予定がなくても「投稿」画面から「新規追加」→「タイトル」を入力→「下書き保存」を何度も繰り返します。
※タイトルにはIDを入れておくとわかりやすいと思います。
こうして、IDを確保しておく作戦です。
今回の場合、「100141」と「100145」を削除し、「操作」タブにて「AUTO_INCREMENT」に「100141」と入力し「実行」。
WordPressで「新規追加」を例えば10回繰り返し「100150」までIDを確保しておきます。
そうするとこのあと記事を書く度に「自動下書き」が作成されても「100151」の記事を書くときまで「phpMyAdmin」で作業する必要がなくなりますのでオススメです!
その他、欠番については、こちらの記事も参考にしていただけたらと思います。
WordPressでパーマリンク(ブログのURL)を「%post_id%(数字)」に決めた代償!?
WordPressのパーマリンク「%post_id%」の数字(ID)を変更する方法