BLOG

WordPress – パーマリンクに日付を入れると、single.phpが適応されない

2013-10-08

困った人も多いのではないでしょうか。
single.phpをアップして確認する際、一瞬「え???」ってなった経験があると思います。

/%category%/%year%/%monthnum%/%day%_%hour%
こんな感じでパーマリンクを設定すると、日付アーカイブ扱いになり、single.phpが無視されてしまいます。
そんな時は、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;
  }
}

と追記すれば、single.phpが無事適応されます。
私は、%hour%で止めてしまうことが多いので、

!empty($q->minute) || !empty($q->hour)

と、「&&」を「||」しています。

参考サイト様に感謝。