Rewish

WordPressのパーマリンクを日付ベースにする方法

WordPressのパーマリンクを/YYYY/MM/DD/hhmmの様な日付ベースにしようとすると、日付アーカイブになってしまい記事単体のページとして認識されません。

秒まで設定(/YYYY/MM/DD/hhmmssなど)すれば記事単体のページとして認識されますが、微妙に長くなってしまうので見た目もちょっと・・・ですよね。

と言う訳で今回は、半ば強引にパーマリンクを日付ベースにしてみたいと思います。

日付ベースのパーマリンクを有効にするコード

以下のコードをテーマファイルの何処か(functions.phpなど)に記述。

<?php
add_action('parse_query', 'date_base_permalink');
function date_base_permalink($wp_query) {
  $q = (object)$wp_query->query_vars;

  // 年・月・日・時・分がURLに含まれていたら
  if (!empty($q->year) && !empty($q->monthnum) && !empty($q->day) && !empty($q->minute) && !empty($q->hour)) {
    // シングルページを有効にして
    $wp_query->is_single = true;

    // アーカイブページを無効にする
    $wp_query->is_archive = false;
  }
}

あとは、パーマリンクの設定に/%year%/%monthnum%/%day%/%hour%%minute%と入力すれば、パーマリンクが /YYYY/MM/DD/hhmm な形になります。簡単ですね。

テーマを変更しても日付ベースのパーマリンクを使いたい

上記のように、テーマファイルにコードを記述する方法では、テーマを変更した際にパーマリンクが無効になってしまいます。

そんな悩みも、コードをプラグイン化してしまえば解決です。

プラグインを作成

上記コードの最初に以下を追記し date_base_permalink.php など適当なファイル名で保存する。

<?php
/*
Plugin Name: DateBasePermalink
Description: 日付ベースのパーマリンクを有効にするプラグイン!
*/

プラグインを有効化

作成した date_base_permalink.phpwp-content/plugins/ に移動またはコピーして、管理画面からプラグインを有効化すれば完了。

プラグイン作成の練習感覚でやってみるのも良いと思います。