2008年8月06日の投稿

2008-08-06
晴れ

携帯の位置情報活用プラグイン Ktai Location 1.0.3 リリース

ゆりこ による 08:52:34 の投稿
カテゴリー: WordPressハック
タグ: , , , , , ,

携帯電話の位置情報活用プラグイン「Ktai Location」のバージョン1.0.3 をリリースしました。GPS 等の位置情報を WordPress ウェブログに簡単に取り込むことができます。1.0.2 からの変更点は以下の通りです。

  • 位置情報同一である条件を「小数点以下5ケタ目で四捨五入した結果が一致する」に緩和しました。
  • Ktai Location 1.0.0 以降で、位置情報に高さ情報がないのに、Lat_Long フィールドに2つめのコンマを付けてしまっていた問題を修正しました。Lightiweight Google Maps の 1.30 以前で、緯度経度を指定して地図を表示したとき、このような Lat_Long フィールドを認識しない問題があります。
ダウンロード: ktai_location103.tar.bz2 (20.3KB)
より新しい版が出ています。

1.0.0 からの新機能である高さフィールドの付与で問題がありました。なんと、高さ情報がなくてもコンマを付けてしまっていたのです (「35.688344444444,139.70014166667,」のような感じ)。ほとんどの場合問題がないのですが、Lightiweight Google Maps のバージョン 1.3.0 以前で、緯度・経度を指定して地図を表示させたとき (投稿に表示される小さい地図のマーカーをクリックして大きい地図にジャンプしたとき等) では、そういう Lat_Long フィールドが出ない不具合がありました。Lightiweight Google Maps の方を修正すべき問題ですが、旧バージョンを使う人のために Ktai Location の方を直すことにしました。すでに余分なコンマがついてしまっている場合、phpMyAdmin ないし mysql コマンドラインで以下の SQL を実行してください (wp_ の接頭辞は適時変更してください)。

UPDATE wp_postmeta SET meta_value = SUBSTRING_INDEX(meta_value, ',', 2) 
WHERE meta_key = 'Lat_Long' AND SUBSTRING(meta_value, -1, 1) = ',';

WP-PageNavi を使わずにナビゲーション表示 (改良版)

ゆりこ による 17:07:47 の投稿
カテゴリー: WordPressハック,更新履歴
タグ: ,

ナビゲーションのサンプル画像

先月下旬に、「WP-PageNavi を使わずにナビゲーション表示」というテクニックを公開しましたが、パーマリンクを使っていても検索などクエリー文字列を使う URL の場合 (http://example.com/?s=検索文字列 など)、不具合が起きることが分かりました。

そこで、全面的に変更したものに差し替えます (元記事も新しいコードに入れ換えてあります)。ここまで長くなると、関数化した上でテーマの functions.php に切り出して、index.php 等からはその関数を呼び出す方がいいですね。

<div class="tablenav"><?php global $wp_rewrite;
$paginate_base = get_pagenum_link(1);
if (strpos($paginate_base, '?') || ! $wp_rewrite->using_permalinks()) {
	$paginate_format = '';
	$paginate_base = add_query_arg('paged', '%#%');
} else {
	$paginate_format = (substr($paginate_base, -1 ,1) == '/' ? '' : '/') . 
	user_trailingslashit('page/%#%/', 'paged');;
	$paginate_base .= '%_%';
}
echo paginate_links( array(
	'base' => $paginate_base,
	'format' => $paginate_format,
	'total' => $wp_query->max_num_pages,
	'mid_size' => 5,
	'current' => ($paged ? $paged : 1),
)); ?></div>