すずろぐ

人生大逆転を目指す、鈴木俊吾の成長日記

WordPress 記事のURLを自動的に連番にする方法

パーマリンクの変更

こんばんは、すずしんです。

WordPressでブログを始めた私ですが、まず最初に設定しておこうと思ったのはパーマリンクの設定です。 私は記事のパーマリンク(URL)を連番にしたかったので、その方法を調べてみることにしました。 そこで、今回の記事では記事のパーマリンクを連番にする方法について紹介したいと思います。

ちなみに、私のWordPressのバージョンは4.3.1になります。 バージョンによっては、修正する箇所が微妙に異なるかもしれませんがご了承下さい。

パーマリンクの設定

私は最初、パーマリンクに「%post_id%」を設定しておけば自動的に連番になるのかと思っていました。 しかし、実際には自動保存や画像のアップロードなどの動作を行う度にidが加算されていってしまい、結果的に飛び飛びの値になってしまうことに気づきました。 これではいけないと対策法を調べたところ「%postname%」を使うと良いという情報を得ました。

まずは、WordPressにログイン後、ダッシュボードの「設定」→「パーマリンク設定」に移動します。 その後、「共通設定」の部分で「カスタム構造」を選択し、パーマリンクを設定します。 私の場合は「ドメイン/年/月/連番」という形にしたかったので、

[text] /%year%/%monthnum%/%postname% [/text]

としました。 この「%postname%」という部分が後々連番になりますので、それを考慮したうえで皆さんの希望のパーマリンクに設定して下さい。

パーマリンクの変更

meta-boxes.phpの編集

  1. パーマリンク設定をしただけではまだ連番にはなりません。 この「%postname%」は投稿スラッグという部分を表しています。 投稿スラッグというのは、各記事に固有のURLを与えることができるようにするものです。

投稿スラッグは初期設定では表示されていません。 記事の投稿ページ右上にある「表示オプション」をクリックして、表示される項目の中から「スラッグ」にチェックを入れることで表示されるようになります。

・表示オプション オプション

・スラッグの表示 スラッグの表示

この状態だと毎回自分でスラッグの値を設定してやらなければなりません。 でもこれは少々面倒ですので、自動でスラッグが連番で設定されるようにPHPファイルを修正してやります。 編集するファイルは「/wp-admin/includes/meta-boxes.php」になります。 FTPソフトで「meta-boxes.php」をダウンロードしてくると良いと思います。

「meta-boxes.php」で変更する部分は、「post_slug_meta_box」関数になります。 この部分を「Ctrl+F」で検索すると良いでしょう。 すると、該当する部分は以下のように記述されていると思います。

[php] /* * Display slug form fields. * * @since 2.6.0 * * @param object $post / function post_slug_meta_box($post) { ?> <label class="screen-reader-text" for="post_name"><?php _e(‘Slug’) ?></label><input name="post_name" type="text" size="13" id="post_name" value="<?php echo esc_attr( apply_filters(‘editable_slug’, $post->post_name) ); ?>" /> <?php } [/php]

これを以下のように変更して下さい。

[php] / * Display slug form fields. * * @since 2.6.0 * * @param object $post */ function post_slug_meta_box($post) { / This filter is documented in wp-admin/edit-tag-form.php */ ?> <label class="screen-reader-text" for="post_name"><?php _e(‘Slug’) ?></label> <input name="post_name" type="text" size="13" id="post_name" value="<?php if(get_post_status() == ‘publish’){ echo esc_attr( apply_filters(‘editable_slug’, $post->post_name) ); } else { echo count_user_posts(1) + 1;} ?>" /> <?php } [/php]

これは何をしているかというと、投稿スラッグの部分に現在記事の数+1を代入するという処理を行っています。 そのため、新しい記事が投稿されると記事の数が増えて連番になるという仕組みです。 投稿済みの記事である場合には、条件分岐で現在の値を保持しています。 修正が終わったらファイルをアップロードするのを忘れないでくださしね。

※ functions.phpの修正

これは必ずしもやるというわけではありません。 お使いのWordPressのテーマによっては、「functions.php」で投稿スラッグの内容を変更する処理が行われている場合があります。 ですので、このスラッグの変更処理を無効化してやります。

変更するファイルは「/wp-content/themes/*/functions.php」です。 皆さんがお使いのテーマの「functions.php」を選択してダウンロードし、変更処理が行われている部分を見つけてコメントアウトするか削除してください。 ちなみに、コメントアウトは「//」といったように該当する箇所を「/」と「/」で囲ってやれば良いです。

以上で、次回以降の新規記事の投稿時からはURLが自動で連番になるようになると思います。 お疲れ様でした。