2007-01-15
晴れ

wp-eznavi 大幅改造中

yuriko による 17:50:36 の投稿
カテゴリー: WordPressハック

いま、wp-eznavi のコード改善を行なっています。

  • できるだけデーターベースへの直接アクセスせずに、WordPress API 関数を使う。
  • 位置情報のURL を CSS から display:none で非表示にした場合、au から投稿の場合「GPS情報URL」という文字列が残ってしまってかっこわるいため、この文字列も非表示の対象とする。
  • 写真の EXIF データーに GPS 情報を持たせた場合にも対応する。
  • 位置情報 URL の解析部分は地図 URL の種類ごとに別クラス化してコードをすっきりさせる。
  • 位置情報 URL をアンカー化する機能は削除;-)
  • 位置情報 URL の見せ方は div class=”ほげほげ” でくるむ方法に決め打ち (wp_head に add_action して display:none な CSS を吐き出さすため)。
  • wp-eznavi 0.5.3 における「実験的な実装」はすべて削除;-) ごめんなさい (→ 別プラグインとして切り分けを検討)
  • その結果、管理画面が不要になったので削除。

EXIF データー読み取り部分以外は作り込んだのですが、お試しサイトで、GPS 情報 URL を貼ってみても、位置情報が postmeta テーブルに入っていません。不思議に思って調べてみると、Geo プラグインが位置情報を消してしまっていたのです!!

function update_post($id)
/**
* Updates the geo info for a post when the post is updated.
*
* Long description for the Function.
*
* @param	$id	Description
*/
{
  delete_post_meta($id, '_geo_location');
  add_post_meta($id, '_geo_location', $_POST['geo_lat'] . ',' . $_POST['geo_lon']);
}

このようなコードになっているので、wp-eznavi (改造版) が add_post_meta() しても、Geo プラグインが delete_post_meta() してしまっています。そして、投稿画面にある Latitude, Longtitude フィールドは空なので、空の数値が postmeta テーブルに入ってしまいます。

すなわち、現行の wp-eznavi でも、位置情報の URL を書き換えたとしても、Location カスタムフィールドの数値で上書きされてしまうということになります。Geo プラグイン凶悪すぎ;-)

こりゃ Geo プラグイン自体も改造版をリリースしないといけないかも;-)