WordPressでダッシュボードの画面で「設定」の「表示設定」を固定ページなどにすることでホームページを固定することにできる。

しかし、こうしてしまうとページにスラッシュが自動的に挿入されてしまう。ディレクトリーならこれでいいのだが、例えば、.html on PAGESなどを導入していると

http://hoge.hoge.com/index.html/

のようになるとなんとも格好が悪い。そこでいろいろ調べてみた。

http://www.outbreak2000.com/archives/46.html

のページにも同じような症状の方がhome.phpを追加することで対応していた。

でもトップページがほぼ固定ならいいがそうでない場合はやはり都合が悪い。
またファイルが1つ増えるのも嫌なので原因を見つけ対応することにした。

まずはこのスラッシュを表示させている原因をいろいろネットで探してみたがわからなかった。そのため自分でトライ。

JGREP2を使いながらpage_on_frontという変数を手がかりにして3日ぐらいかかり、やっと原因が判明。

wp-includesの下にあるquery.phpのファイルの中にあるis_front_page という関数がある。中身は下記のようになっている。

<変更前>
function is_front_page () {
 // most likely case
 if ( ‘posts’ == get_option(‘show_on_front’) && is_home() )
  return true;
 elseif ( ‘page’ == get_option(‘show_on_front’) && get_option(‘page_on_front’) && is_page(get_option(‘page_on_front’)) )
  return true;
 else
  return false;
}

<変更後>
function is_front_page () {
 // most likely case
 if ( ‘posts’ == get_option(‘show_on_front’) && is_home() )
  return true;
 elseif ( ‘page’ == get_option(‘show_on_front’) && get_option(‘page_on_front’) && is_page(get_option(‘page_on_front’)) )
  return false;
 else
  return false;
}

スラッシュが表示されるのはフロントページの表示を固定とした時だけに生じる。つまりその時になにか処理をしているということ。それがこの部分らしい。

上記のように変更することでスラッシュがつかなくなる。ただし、ディレクトリーの階層がある場合、スラッシュがつかないかもしれないのでその場合はこのような単純な変更でなくさらに条件をいろいろ変えればいいと思う。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

*

次のHTML タグと属性が使えます: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>