wpDiscuzはwordpressのコメントプラグインなのですがこれの設定でページを読み込んだあとにあとからコメントリストをajaxをロードするという設定があるのですが、これを使うとリダイレクト先でうまくリンク先に推移しない問題があったので書いておきます。
ちなみにすいませんが対処方法はありません。
とりあえずこういうことがおこるよということを書いておこうと思います
wpDiscuzのコメントリストのローディングタイプ
まずはじめにwpDiscuzのコメントリストのローディングタイプについて解説します。
とりあえず公式サイトの情報は以下になります。
わたしは日本語化していますので日本語化している場合ローディングタイプは以下の3つになります
- ページに負荷をかける
- ページ後にAjaxロードを開始します
- [コメントを表示]ボタンを表示します
今回の問題は2番です。これはページのコンテンツを読み込んだあとにコメントリストをajaxでロードする設定です。通常これはページの表示を軽くする目的で使うと思うのですがこれを使うと問題が発生します。
コメントリストのajaxロードを設定するとコメントリンクにリダイレクトしたときにうまく推移しない。
この問題は、たとえばサイドバーに「最近のコメント」ウィジェットをつかっているときに発生します。サイドバーのコメントリンクをクリックするとそのページのコメントにリンクしているので通常はコメント自体に推移します。
リンクは以下のようになっているはずです
https://exsample.com/#comment-123
ハッシュをつかっているのでそのコメントへと推移するはずなのですがコメントリストのajaxロードを使っている場合、ページを表示したあとajaxロードでコメントリストを読み込むために、コメントリンクにリダイレクトしたあとに要素がみつからず、コメントリンクに推移しない問題が発生します。
ようするにこの設定を使うとリンク先でうまくハッシュに推移しないということです。ということはこの設定は使えないということになります。
コメントリストのajaxロードを使うとリンク先で推移しない問題の対処方法はあるのか?
wpDiscuzの情報をいろいろ検索してみたのですがこの問題の対処方法は見つかりませんでした。
たとえばのはなしになるのですが、仮に要素がみつかるまでまって処理を実行するjavascriptプログラムを書いてもこの問題に対する根本的な原因の解決にはなっていないと思います。というのはコメントリストの出現をまったあとにわざわざその要素にスクロールするような実装だと、ユーザビリティは最悪だと思います。
この問題はwpDiscuzのフォーラムに報告したほうがいいかもしれません。
筆者はとりあえず「ページに負荷をかける」設定のままにしています。
まとめ
ちなみに3番の「[コメントを表示]ボタンを表示します」もためしましたがこちらも微妙です。
コメントが大量にある場合はあれかもしれませんがコメントが少ないならとりあえずは「ページに負荷をかける」でもいいのかなあと思います。
追記
ajaxロードに変更するとリダイレクト先でコメントリンクに推移しない問題なのですがあとからこの問題が発生する原因がわかりました。
どうもこれはwpDiscuzの問題ではなくwordpressでつかっているテーマの問題のようです。通常exsample.com/#comment-123というリンクをクリックした場合はそのリンクへと飛ぶはずなのですが、なぜかコメントリンクのリダイレクト先がその記事「exsample.com」へと飛ぶようにカスタマイズされているようでした。
コメントリストのajaxロードは「Cocoon」テーマの場合は問題なく動作するようです。実際にwpdiscuzを使っているサイトも見かけます。
さらに追記
テーマのjavascriptでreplaceState関数をつかってハッシュを削除するようなスクリプトが組まれていたせいでうまくリンク先(#ハッシュを含むurl)に推移しなかったことが原因でした。
今回の問題はwpdiscuzの問題ではなくWPテーマで実装されているjavascriptが原因でした。
勘違いして書いた記事はあえて消さずに打消し線で残しておきます。同じよう悩んでいる方の参考になるかもしれないので
コメント