Rewish

ウェブデザイン、HTML、CSS、JavaScript、PHP、WordPress、Movable Typeなど、Web制作で役立つかも知れないBlog.

Search

Entry Search

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

カテゴリー
WordPress
タグ
Plugin

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.phpwp-content/plugins/に移動またはコピーして、管理画面からプラグインを有効化すれば完了。

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