WordPressで続きを読むを表示するためのプラグインの一つ『Ajaxified Expand Post NOW』に関して改良した。
このところずっと動かず、なんでだろうなーと思っていたのだけどやっと解決。
結局続きを読む関係のJavascriptがうまく行っていなかった。
素晴らしいプラグインの一つの『Head Cleaner』との相性が悪かったようだ。
『Head Cleaner』が作動する時に、『Ajaxified Expand Post NOW』のJavascriptを削除していたみたい。
なのでJavascriptを別のファイルとして読み込むことにした。
今回の解決策は結構特殊な例なので、試す時はご注意を。
作業の流れ
①『Ajaxified Expand Post NOW』のバックアップを取る。
②Javascript部分を分ける
③分けたJavascriptを修正
④プラグイン本体を修正
⑤アップロードして動作確認
こう言う流れで行こうと思う。
まずは各人バックアップを取るんだ!
面倒くさい人は本家からDLしよう。(2017年5月4日リンク切れ確認)
失敗した時のためのフォローだから改良して無い人はバックアップもいらないか。
Javascript部分を分ける
ここからはコードの引用が多くなり、わかりづらいと思うので頑張ってね。
『ajaxified-expand-post-now.php』ファイルを改良する。
90行目付近の
echo <<<addJS
から、171行目付近の
AddJS;
までがJavascriptなので、ここを切り取って別のJavascriptファイルにする。
『expand.js』と言うファイルを作ってそこに貼り付ける。
あ、上のAddJSは違うよ。それらの間だけね。
分けたJavascriptを修正
まず『expand.js』の中にある『$aepnPluginLocate』を修正する。
http_request.open('POST', '$aepnPluginLocate', true);
下のように『ajaxified-expand-post-now.php』までの絶対アドレス、http://~~~に書き換える。
http_request.open('POST', 'http://あなたのドメイン/wp-content/plugins/ajaxified-expand-post-now.php', true);
次に、『$aepnLoadingMsg』を修正する。
function fetchLoading() { wH(gE('viewBox-'+postID), '$aepnLoadingMsg'); }
この部分は『続きを読む』をクリックした時に表示する、読み込み中という文字の設定だ。
function fetchLoading() { wH(gE('viewBox-'+postID), '続きを読み込み中'); }
余談として、プラグイン配布の本家のコメント欄には修正前153行目の
gE('close-'+postID).style.display = 'inline';
の『inline』を『none』にしろとか書いてあったけど、僕は変えてない。
ここを変えたら続きを読み込んだ時にhead部分も表示されてしまった。
プラグイン本体を修正
切り取った『ajaxified-expand-post-now.php』側には代わりに
if (!$more) { echo ''; }
と書く。
『ajaxified-expand-post-now.php』と同じ階層に『expand.js』を置いておく。
それに適するようにアドレスも変えてね。
アップロードして動作確認
ここまでの修正が完了したらアップロードして有効化だ。
phpのエラーが出たらその箇所を修正しよう。
最後に
これで一応解決した。
しかし、lightbox関係のプラグインの『slimbox2』が動かない。
以前に修正方法を探してきたんだけど、Javascriptファイルを分けたことでダメになった。
また修正方法を考えよう。
コメント