この記事は1年以上前に書かれました。
内容が古くなっている可能性がありますのでご注意下さい。
内容が古くなっている可能性がありますのでご注意下さい。
WordPressの投稿や固定ページにOpenStreetMapの地図を貼り付けるためのプラグイン、Embed OSMのバージョン0.2では、プラグインに関する設定値をWordPressのテーブルに保存できるようにします。
バージョン0.1では、地図を埋め込む領域は
<div id="mapdiv" style="width:400px; height:300px;"></div>
のように、固定値が出力されていました。
この領域の幅と高さを、設定値として保存できるようにします。
ただし、今回は、設定値を変更するUIまでは作成しません(ので、値は固定のままです)。
バージョン0.2のembed-osm.phpの完全なリストは以下のとおりです。
<?php /* Plugin Name: Embed OSM Plugin URI: http://midoriit.com/works/embed-osm.html Description: Embed OpenStreetMap on the page. Version: 0.2 Author: Midori IT Office Author URI: http://midoriit.com/ License: GPL3 */ function embed_osm_activate() { add_option('embed_osm_width', '400'); add_option('embed_osm_height', '300'); } function embed_osm_uninstall() { delete_option('embed_osm_width'); delete_option('embed_osm_height'); } function embed_osm_handler( $atts ) { $width = get_option('embed_osm_width'); $height = get_option('embed_osm_height'); extract( shortcode_atts( array( 'lon' => '0', 'lat' => '0', 'zoom' => '1'), $atts ) ); return ' <div id="mapdiv" style="width:'.$width.'px; height:'.$height.'px;"></div> <script type="text/javascript" src="'.plugins_url().'/embed-osm/openlayers/OpenLayers.js"></script> <script type="text/javascript"> var map = new OpenLayers.Map("mapdiv"); map.addLayer(new OpenLayers.Layer.OSM()); var lonLat = new OpenLayers.LonLat('.$lon.' , '.$lat.').transform( new OpenLayers.Projection("EPSG:4326"), map.getProjectionObject() ); map.setCenter(lonLat, '.$zoom.'); var markers = new OpenLayers.Layer.Markers("Markers"); map.addLayer(markers); var marker = new OpenLayers.Marker(lonLat) markers.addMarker(marker); </script> <small> <a href="http://www.openstreetmap.org/?mlat='.$lat.'&mlon='.$lon.'#map='.$zoom.'/'.$lat.'/'.$lon.'" target="_blank">大きな地図を表示</a> </small>'; } register_activation_hook( __FILE__, 'embed_osm_activate'); register_uninstall_hook( __FILE__, 'embed_osm_uninstall'); add_shortcode('embed_osm', 'embed_osm_handler'); ?>
最初の関数
function embed_osm_activate() { add_option('embed_osm_width', '400'); add_option('embed_osm_height', '300'); }
では、WordPresのadd_option()関数を用いて、embed_osm_widthとembed_osm_heightというキーに対する値として、それぞれ400と300をセットしています。これによってwp_optionsテーブルに設定値を保存することができます。
phpMyAdminで確認してみましょう。
次の関数
function embed_osm_uninstall() { delete_option('embed_osm_width'); delete_option('embed_osm_height'); }
は、WordPresのdelete_option()関数を用いて保存した設定値を削除しています。これは、プラグインを削除した際に、不要なデータを残さないためのものです。
ショートコード[embed_osm]の処理をするハンドラでは、WordPresのget_option()関数を用いて地図を貼り付ける領域の幅と高さを取得し、
function embed_osm_handler( $atts ) { $width = get_option('embed_osm_width'); $height = get_option('embed_osm_height');
この値を用いて領域を定義します。
<div id="mapdiv" style="width:'.$width.'px; height:'.$height.'px;"></div>
最後にフック関数を登録します。
register_activation_hook( __FILE__, 'embed_osm_activate'); register_uninstall_hook( __FILE__, 'embed_osm_uninstall');
これによって、プラグインを有効化したときにembed_osm_activate()関数が、プラグインを削除したときにembed_osm_uninstall()関数が呼び出されるようになります。
実行結果はバージョン0.1と変わりません。
[embed_osm lat="35.32395" lon="139.55598" zoom="16"]
と記述すると、以下のように表示されます。
今回作成したプラグインのダウンロードはこちらからどうぞ。