Speach Bubbleのコードを改造し、アップロード側のディレクトリにあるアイコンを指定できるようにしてみました

By | Date : 2016/11/19 ( Last Update : 2016/11/23 ) | 121 views

Hello~、ミョウガですよっ♪

本サイトでは、吹き出しを表示するプラグイン「Speech Bubble」を使用しています。

 

今回はそのプラグインを改造して、吹き出しのアイコン画像をプラグイン側のディレクトリの代わりに、アップロード側のディレクトリから指定できるようにしてみます。

1. 注意事項

プラグインを編集すると、環境によっては正常に動作しない可能性があります。

プラグインのソースコードを編集する前に、あらかじめファイルをバックアップしておきましょう。

あるいは、テスト環境の方でプラグインを編集して、動作確認するのも手ですよ♪

 

2. プラグインを改造

2.1. uploadsディレクトリにアイコン画像用のフォルダを作成

まずは、Speech Bubbleのアイコン画像を格納するフォルダを作成します。

FTPソフトやターミナルソフトで「[WordPressのディレクトリ]/wp-content/uploads」ディレクトリ内に「speech-bubble」フォルダを作成します。

winscp-sb

WINSCPでの例



パーミッションは、wwwもしくはユーザーが読み取りと実行できれば(8進数で5以上)OKですっ!

作成したspeech-bubbleフォルダの中に「img」フォルダを作成します。所有者とパーミッションはspeech-bubbleと同じように設定します。

作成したimgフォルダの中に、speech-bubbleのアイコンで使用する画像をアップロードします。

winscp-sb2

プラグイン側「[WordPressのディレクトリ]/wp-content/plugins/speech-bubble/img」で既にアップロード済みの場合、そこからコピーする手もあります。

これで、アイコン画像をアップロード側のディレクトリへ配置することができました。

 

2.2. プラグインのソースコードを編集

次に、プラグインのソースコードを編集します。

「[WordPressのディレクトリ]/wp-content/plugins/speech-bubble/classes」ディレクトリにある「SnbSpeechBubble.php」を開きます。

必ずUTF-8(BOMなし)の文字コードで編集できるテキストエディタで編集してね。

編集する場所は、shortcode_speech_bubble関数とshortcode_speech_bubble_id関数の2箇所です。

関数内にある変数$sb_icon_path及び$speaker_icon_pathが、吹き出しのアイコンで指定する画像のパスが格納されています。また、定数のself::PLUGIN_FOLDER_PATH_IMGは、吹き出しのアイコンで指定する画像のサブディレクトリが定義されています。

 

wp_upload_dir関数でwp-content/uploadsディレクトリのパスを取得します。戻り値はキーと値のペア表す配列なので、キーに「baseurl」を指定して、その値とself::PLUGIN_FOLDER_PATH_IMG$attrs[‘icon’](ショートコードのicon属性に指定した文字列が格納されています)を連結し、吹き出しのアイコンで指定する画像のパスを生成します。

生成したパスを$sb_icon_path及び$speaker_icon_pathに代入することで、アップロード側のディレクトリからアイコン画像を指定することができます。

 

これで、アップロード側のディレクトリからアイコン画像を指定できるようになりました。

 

2.3. アップロード側にアイコン画像がない時、代わりにプラグイン側から指定できるようにする

ここでは、プラグインのソースコードさらに改造し、アイコン画像(例 : icon.jpg)を指定した時、

  1. アップロード側に(/wp-content/uploads/speech-bubble/img/icon.jpg)存在するかどうかチェック
  2. 存在する場合、そのパスを指定します。
  3. 存在しない場合、プラグイン側の方(/wp-content/plugins/speech-bubble/img/icon.jpg)を指定します。

という動作にしてみます。

ファイルが存在するかどうかを判別するには、file_exsits関数を使用します。引数にはファイルパスを指定するのですが、URLではなく、サーバーから見たローカルパスを指定します。

file_exsits関数の戻り値を判別して、アップロード側のパスもしくはプラグイン側のパスを生成していきます。

 

3. プラグインでユーザーが追加するファイルは、アップロード側のディレクトリに配置した方がよい理由

それは、プラグインをアップデートしても、アップロード側にあるファイルはそのまま残るからです。プラグインをアップデートすると、そのディレクトリの中身が上書きされるため、追加でアップロードしたファイルが消えてしまいます。

WP Speech Bubbleプラグインアップデート注意!!! ver 1.0.3 現象と対策 – ありそうでなかったものを

今回の改造により、Speech Bubbleをアップデートしても、アップロード済みのアイコン画像をそのまま残すことができるようにしました。

 

ではでは、See youですよっ♪

 

この記事をシェアする
Chronoir.netのRSSフィードを購読する

About : ミョウガ(Myoga)

Hello~! 「ミョウガ」です。よろしくお願いします!(≧▽≦)/ 主にC#/XAML/C++などをメインにプログラミングやアプリの開発をしています。好きな物はカフェラテとハーブティ、趣味は写真撮影と艦これです。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

*