WordPressのGoogleMap連携プラグイン「WP-GoogleMaps」を利用する際に気をつけること

WordPress上にてGoogleMapsAPIを利用する必要があったので、比較的使いやすそうなWP-GoogleMapsというプラグインを利用してみたところ、日本語が文字化けしてしまって使い物にならないというバグに遭遇して解決したので、プラグインの紹介とその解決方法を掲載します。

WP-GoogleMapsプラグインの概要

WP-GoogleMapsは1ブログ1マップという感じで実装するプラグインで、1つのマップの中にいくつでもマーカーを落とし込むことができます。

今のところ1つしかマップが登録できないのですが、ショートコードにidという記載があるため、もしかしたら今後複数のマップの管理などもできるようになるかもしれません。

有償のアドオンが存在する

有償のアドオンが存在し、アドオンを導入することで、

・デフォルトのマーカーアイコンの変更
・マーカー毎のアイコンの変更
・フキダシのテキストの変更
・フキダシへの画像挿入
・フキダシへのリンクの挿入
・マーカー情報のインポート、エクスポート(CSVファイル形式)

といったことが可能になります。

問題点

プラグインを普通に導入すると、マーカー設置の際に日本語を入れると、文字化けして住所検索もできず、全く使い物になりません。

原因はプラグインのソースコードに有り、管理用のデータベーステーブルを生成する際、文字コードをlatin1として指定しているためです。

wpGoogleMaps.php 1064行目付近

    $sql = "
        CREATE TABLE `".$table_name."` (
          `id` int(11) NOT NULL AUTO_INCREMENT,
          `map_id` int(11) NOT NULL,
          `address` varchar(700) NOT NULL,
          `desc` varchar(700) NOT NULL,
          `pic` varchar(700) NOT NULL,
          `link` varchar(700) NOT NULL,
          `icon` varchar(700) NOT NULL,
          `lat` varchar(100) NOT NULL,
          `lng` varchar(100) NOT NULL,
          `anim` varchar(3) NOT NULL,
          PRIMARY KEY (`id`)
        ) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ; // この CHARSET=latin1 が問題
    ";

改善する方法

プラグインインストール前

WordPressの自動インストール機能を利用せず、アーカイブとしてまずはファイルをダウンロード・解答し、ソースコードを修正します。

--- wpGoogleMaps.php    2012-02-17 18:24:32.000000000 +0900
+++ wpGoogleMaps2.php   2012-02-21 23:50:50.002343200 +0900
@@ -1074,7 +1074,7 @@
           `lng` varchar(100) NOT NULL,
           `anim` varchar(3) NOT NULL,
           PRIMARY KEY (`id`)
-        ) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;
+        )
     ";
 
    require_once(ABSPATH . 'wp-admin/includes/upgrade.php');

具体的には、ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 の指定はいらないので削ってしまいます。

プラグインインストール後

コンソールまたは管理ツール(PhpMyAdminなど)でテーブルの文字コードをutf8に変更します。