2006-11-08
晴れ

Geoプラグイン修正して地図復活

yuriko による 16:30:14 の投稿
カテゴリー: WordPressハック,サイト更新情報

PHP 5.2.0 で不調だった Geo Plugin ですが、投稿画面の描画がされるようなズボラ修正をほどこしました。その結果、地図ページも復活しました。ついでに、Instant Google Map Plugin の後継である Plug ‘n’ Play Google Map Plugin に更新してみました。Google Map API 2 になったので地図が新しくなり、神戸空港が地図に登場したのはうれしいところです。

さて、肝心の修正箇所ですが、以下の通りです。プラグインが利用するコールバック関数を変更しました。

255,268c255
<       function edit_form_advanced($not_used)
<       /**
<       * Queues the output buffer for displaying the Geo interface on the post
<       * editing form
<       *
<       * Long description for the Function.
<       *
<       * @param        $not_used       Description
<       */
<       {
<               ob_start(array('Geo', 'advanced_buffer'));
<       }
<
<       function advanced_buffer($content)
---
>       function edit_form_advanced()
274d260
<       * @param        $content        Description
298c284,285
<               return preg_replace('#(<div .*?id="advancedstuff".*?'.'>)#ims', '
\\1' . $output, $content, 1);
---
>               echo $output;
>               return;

これだけでは修正内容がよく分からないと思うので、当初呼び出されていたコールバック関数の中身を書き出してみましょう。

	function edit_form_advanced($not_used)
	/**
	* Queues the output buffer for displaying the Geo interface on the post 
	* editing form
	*
	* Long description for the Function.
	*
	* @param	$not_used	Description
	*/
	{
		ob_start(array('Geo', 'advanced_buffer'));
	}

当初は、投稿画面に挿入する位置情報編集フィールドの描画 (advanced_buffer 関数) を出力バッファー経由にしていたのです。投稿画面の途中にフィールドを挿入することができないので、ob_start を使って preg_replace でフィールドを挿入する技を使っていたようですが、それが PHP 5.2.0 ではうまく動かないようです。したがって、この処理を外していきなり描画させれば正常になります。

そのために、advanced_buffer 関数 を edit_form_advanced に改名して、末尾の preg_replace をやめて echo に変更しています。こうすれば Location フィールドも描画されます。ただし、描画位置が不格好で、「アップロード」の上に来てしまいます。

[追記] Location フィールドを描画させる修正にしたので、ズボラ修正に関する記述は削除。

コメント・ピン通知 »

  1. [...] ●PHP5.2.0 にしたら投稿不能 @ Yuriko.Net 旅行記 ●PHP 5.2.0 不具合は Geo プラグインが原因 @ Yuriko.Net 旅行記 ●Geoプラグイン修正して地図復活 @ Yuriko.Net 旅行記 [...]

    【WordPress ME】遅ればせながら「Plug ‘n’ Play Google Map Plugin」を導入してみた » TSJ付゛録゛IIからのピンバック — 2006-11-09 (木曜日) @ 00:09:58
  2. Google Map / Google Earth…

    Google APIに関する書籍も、ちらほら増えてきて、Google MapやG (more…)

    Tamatebakoからのトラックバック — 2006-11-12 (日曜日) @ 11:38:37
  3. [...] sts. It also lets you specify a default geographic location for your entire WordPress blog. Yuriko.Net 旅行記 » Geoプラグイン修正して地図復活 ・Page Links To PageもしくはPostに対して、設定したURLにリダイレクト [...]

    必見!Wordpress人気のプラグインTop100 | WORDPRESSからの〜からのピンバック — 2012-08-06 (月曜日) @ 10:55:39
※スパム対策プラグインの影響により、すぐにトラックバックが反映されない場合があります。お手数ですが、半日ほど待ってみてください。

上に戻る

コメント投稿

※発言の責任を明確にするため「名無し」「通りすがり」「匿名希望」等の匿名は不可とします。捨てハンドルでもいいので必ず名乗ってください。
XHTML (使えるタグ): <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <img localsrc="" alt=""> .
※スパム対策プラグインの影響により、すぐにコメント内容が表示されない場合があります。お手数ですが、半日ほど待ってみてください。

上に戻る