wordpress プラグインをインストールしたらリンクが開かない TypeError: o is undefined

2014年5月23日

WordPress であるプラグインをインストールしたら、リンクが開かなくなった際のトラブルシューティングに関するメモ。

「My Calendar」というプラグインをインストールしたところ、カレンダーの詳細表示(ポップアップ)の Google マップへのリンクが開かなかったので、コンソールを見たら以下のようなエラーが出ていた。

TypeError: o is undefined  jquery....min.js (4 行目)

...pdateStatus("ready")}else t.updateStatus("error",o.tNotFound),r=e("<div>");retur...

「TypeError: o is undefined」で検索してみたら、クラス名や id 名が競合していたりすると起きる可能性のあるエラーのようだったので、取りあえず開かないリンクの要素を確認したら、その親要素に「map」というクラスが使用されていた。

<div class="url map">
<a class="external" href="http://maps.google.com/maps?z=16&daddr=36.559601,138....">

また、「Magnific Popup」というプラグインを利用するスクリプトでも「map」というクラスを使っていた。

HTML

<p><a class="map" data-mfp-src="" href=""><span class="show_gmap">Google Map を表示 </span><span class="address hide">東京都・・・</span></a></p>

jQuery

if($('a.map').length > 0) {
      $('a.map').each(function() {
      var address = $(this).find('span.address').text();
      address = $.trim(address);
      address = address.replace(/\s+/g, '+');
      var map_param = $.param({
        'q': address
      });
      $(this).attr('data-mfp-src', "https://maps.google.com/maps?" + map_param);
      $(this).attr('href', "https://maps.google.com/maps?" + map_param);
    });

      $('.map').magnificPopup({
      disableOn: 600,
      type: 'iframe'
    });
    }

対処

「My Calendar」の出力するクラス「map」は変更できないので、「Magnific Popup」というプラグインを利用する HTML の要素とスクリプト(上記)のクラス名を「map」から「gmap」に変更したところエラーも消え、リンクも正常に開くようになった。