今日、WordPressのパーマリンク設定を日付ベース「/%year%%monthnum%%day%」にしたのだけれど、日別アーカイブへのリンクと認識されてしまい、個別の投稿が表示されなくなってしまった。
そこで日別アーカイブを無効にするため、自作プラグインに下記を追加した。
add_action('parse_query', 'disable_daily_archive'); function disable_daily_archive($wp_query) { $qv = $wp_query->query_vars; if ($wp_query->is_archive && !empty($qv['year']) && !empty($qv['monthnum']) && !empty($qv['day'])) { $wp_query->is_single = true; $wp_query->is_singular = true; $wp_query->is_archive = false; } }
最初は wp-includes/query.php を直接いじっていたのだけれど、このほうがスマートかなと。
ところが問題が。場合によって同一の日付をもつ投稿が複数存在することもあるが、そもそもパーマリンクは一つのページを指すことが前提なのでWordPressは一つのパーマリンクに複数ページが存在する状況を想定した作りにはなっておらず、下書き状態のページが公開されてしまったり、色々と良くないことが起こる。
やはりスラッグをパーマリンクとして使ったほうがいいのだろうか? これは今後の課題。そのうち、自動的に日付ベースのスラッグを作るスクリプトを作るなどしてみよう。