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)
{
$qv = $wp_query->query_vars;
// 年・月・日・時・分がURLに含まれていたら
if (!empty($qv['year']) && !empty($qv['monthnum']) && !empty($qv['day'])
&& !empty($qv['minute']) && !empty($qv['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: 日付ベースのパーマリンクを有効にするプラグイン!
*/
add_action('parse_query', 'date_base_permalink');
function date_base_permalink($wp_query)
{
$qv = $wp_query->query_vars;
if (!empty($qv['year']) && !empty($qv['monthnum']) && !empty($qv['day'])
&& !empty($qv['minute']) && !empty($qv['hour'])) {
$wp_query->is_single = true;
$wp_query->is_archive = false;
}
}
プラグインを有効化
上記で作成したdate_base_permalink.phpをwp-content/plugins/に移動またはコピーして、管理画面からプラグインを有効化すれば完了。
プラグイン作成の練習感覚でやってみるのも良いと思います。