Luxeritas はわりと人気のあるWordPressテーマだと思いますが、実際につかってみると様々な問題に遭遇します。
今回の問題はハッシュつきのリンクにアクセスするとハッシュが削除されるというものです。
たとえば
example.com/#comment-123 というリンクにアクセスした場合は自動的にハッシュが削除されます
↓
exsample.comになる
これはreplaceStateというjavascriptの関数でハッシュが削除されるようになっています。
Luxeritasでurlのハッシュを削除しないようにする
Luxeritasは複雑な仕組み?
正直に言いますとLuxeritasはブラックボックス的な側面が非常に強いテーマであるため、使用をするのはやめておいたほうがいいと思うくらいに仕組みがどうなっているのかがわかりません。
通常は親テーマ内のjavascriptファイルが読み込まれるようになっていると思うのですが、Luxeritasの場合は下記のファイルでjavascriptファイルが生成されるようになっています。
/wp-content/themes/luxeritas/inc/create-javascript.php
実際にページのソースをみてみると、min.jsではなくmin.jsのあとに一意の番号がついているのが確認できます。これはどうやらluxceritasでなんらかのメニューを保存するとjavascriptファイルが保存されるようになっているようです。しかしこれは親テーマのjsディレクトリには存在しないファイルのように見えますがもしかすると隠しファイルになっているのかもしれません。
このようにLuxeritasはわけのわからない仕組みで実装されている部分があるため新規の人は使わないほうがいいと思います。
urlのハッシュを削除しないようにするにはどうしたらいいのか
前半は話がそれてしまいましたが、どうすればurlのハッシュが削除されないようにできるかを書いていきます。
さきほどのcreate-javascript.phpでこのコードを消してください
if( !isset( $luxe['smooth_scroll_hash'] ) ) {
/* ブラウザの履歴からアンカーリンクの # 消す */
$ret .= <<< SCRIPT
w.history.replaceState(null, "", location.pathname + location.search);
SCRIPT;
}
コメントアウトで「ブラウザの履歴からアンカーリンクの # 消す 」って書いてあるので検索しやすいと思います。このあとにwordpressの管理画面でluxceritasのなにかしらのメニューを保存します。するとそれがトリガーになってjavascriptファイルが再構築されるはず…
なんでこんな意味のない実装するの?
まじでこのテーマ使うのやめたほうがいいです。
Luxeritasで親テーマのコードを変更すると別の問題が発生する可能性があることに注意
ちなみに親テーマのファイルを変更しているのでテーマをアップデートするときは、初期化される点に注意してください。
またcreate-javascript.phpのコードを変更したことにより思わぬ問題が発生する可能性もあります。
とはいえこの記事にたどり着いている人ならそんなことは百も承知しているとは思いますが。
ちなみに今回のコード変更でリダイレクトしたあとにハッシュが削除されないようになったことは確認済みです。
まとめ
Luxeritasテーマは使わないようにしましょう。
Cocoonのほうが無難です。Luxeritasはそんなに速くもないですし
コメント