WordPressでPjaxの実装後よくあるトラブルの解決方法

2014年2月11日 2018年11月8日 Wordpressカスタマイズ /

WordPressでPjaxを実装した後、色々な壁にぶち当たったので、その時の解決方法を紹介していきます。

WordPressでPjaxを実装する

jquery-pjax」というjQueryプラグインを使います。

GitHub defunkt / jquery-pjax

 

まずはプラグインを読み込み、Pjaxを実行します。

 

現在のページのdiv#main_contentの中身と、リンク先のdiv#main_contentの中身が入れ替わります。
複数指定する場合は、カンマで区切って追加します。

一応これPjaxは動きますが、リンク先のソースを一旦全て読み込みdiv#main_contentを抜き出す為、余分なデータの読み込みが発生します。
ヘッダーやフッターなど、必要のない部分の読み込みをスキップし、できるだけ高速に動作させます。

get_headerget_footer()の読み込みを条件分岐させます。

トラブル1:ソーシャルボタンが表示されない

動的に読み込んだ部分にツイッターやFacebookなどのソーシャルボタンがある場合、ページ遷移した後に表示されなくなる不具合が起きました。
これらはページが直接読み込まれた時に処理されるものなので、Pjaxイベントが終わったらもう一度処理してあげる必要がありました。
JSに以下を追記します。

pjax:endは、Pjax処理が終了したときに発生するイベントです。
まだ未確認ですが、他のソーシャルボタンにも再読み込みの関数があるはず。

各ボタンの設置方法については公式ページをご確認ください。(下記リンク)

ツイートボタンの設置方法
Facebookいいねボタンの設置方法
Google+1ボタンの設置方法
はてなブックマークボタンの設置方法

Pjaxの実装には、こちらのサイトを参考にさせて頂きました。

WordPressにPjaxを実装してみる
pjaxとflagmentの使い方(静的サイトでも手軽にpjax!)

トラブル2:SyntaxHighlighterが動かない

これもソーシャルボタンと同様に、ページ読み込み後に処理されるので動的に表示させたら正常に動いてくれません。

WordPressプラグインで実装している場合、プラグインの設定画面で、「SyntaxHighlighterのバージョン」をVersion3.xに設定し、「すべてのブラシを読み込む」にチェックを入れる必要があります。
pjax01

次に、プラグインファイルの中身を見てみます。

pluginsフォルダのsyntaxhighlighterフォルダを確認

syntaxhighlighter
localization
syntaxhighlighter2
syntaxhighlighter3
scripts ←ここにshAutoloader.jsが入っているはず
third-party-brushes

このshAutoloader.jsfooter.phpで読み込みます。

wp_footer()の直後に、shAutoloader.jsの読み込みを記述します。

Pjax処理後に再読み込みをしたいので、先程のjavascriptにさらに追記します。

 

SyntaxHighlighterの再読み込み関数については、こちらのサイトを参考にさせて頂きました。

javascriptのsyntaxhighlighterを使うとき、PJAXの遷移後のページで、ハイライトしたい場合、どうすればいいですか?
SyntaxHighlighter 3 設定方法

この記事へのコメント

コメントを残す

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください

ウェルスナビで損失?