『Ajaxified Expand Post NOW』のJavascriptを分離した | 星光のつれづれ日記

『Ajaxified Expand Post NOW』のJavascriptを分離した

シェアする

  • このエントリーをはてなブックマークに追加

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ファイルを分けたことでダメになった。
また修正方法を考えよう。