- 2008-04-26 (土) 17:16
- wordpress
タグとかカテゴリーみたいなクリックで開閉するオプションエリアを追加する方法について。
ページと同じくこれもテーマのfunction.phpで可能です。プラグインで作っても良い。

基本ソース
PHP:
-
<?php
-
add_action('edit_form_advanced', 'test_tab' );
-
function test_tab(){ ?>
-
<div id="test_tab" class="postbox <?php echo postbox_classes('test_tab', 'page'); ?>">
-
<h3>Test Tab</h3>
-
<div class="inside">
-
<p>Test<p>
-
</div>
-
</div>
-
<?php } ?>
edit_form_advancedで記事投稿、edit_page_formでページ作成のとき表示される。
postbox_classes($id,$page)はwp-admin/includes/post.phpの587行目あたりにある関数。
タブの初期開閉状態を操作するクラスを追加する。
引数は次の通りです。
- $id Div要素につけたID
- $page
'page' ・・・ 常に開いた状態
'post' ・・・ 開閉を記憶
サンプル
GoogleMapの座標を検索するタブ
function.phpにコピペで動きます多分。
PHP:
-
<?php
-
add_action('edit_form_advanced', 'gmap_tab' );
-
add_action('edit_page_form', 'gmap_tab' );
-
add_action('admin_head', 'gmap_tab_header');
-
function gmap_tab(){ ?>
-
<div id="gmap_tab" class="postbox <?php echo postbox_classes('gmap_tab', 'page'); ?>">
-
<h3><?php _e('GoogleMap座標検索') ?></h3>
-
<div class="inside">
-
<p><label for="geoName">住所検索</label><input type="text" id="geoName" size="50" onfocus="this.select()">
-
<input type="button" value="検索" onClick="searchPoint()"></p>
-
<p><label for="show_xy">LatLng:</label><input type="text" id="show_xy" size="60" onfocus="this.select()" /></p>
-
<div id="googlemap"></div>
-
</div>
-
</div>
-
<?php }
-
function gmap_tab_header(){
-
$apikey =get_option('googlemaps_api_key');
-
$scriptname = $_SERVER['SCRIPT_NAME'];
-
?>
-
<script src="http://maps.google.com/maps?file=api&v=1&key=<?php echo $apikey;?>" type="text/javascript" charset="utf-8"></script>
-
<style type="text/css">
-
<!--
-
#googlemap {
-
width:100%;
-
height:300px;
-
}
-
-->
-
</style>
-
<script type="text/javascript">
-
//<![CDATA[
-
var map;
-
var xy;
-
var center_point;
-
var center_mark;
-
window.onload = function (){
-
-
if(!GBrowserIsCompatible()){
-
return;
-
}
-
-
map = new GMap2(document.getElementById("googlemap"));
-
-
map.addControl(new GLargeMapControl());
-
map.addControl(new GOverviewMapControl(new GSize(180,140)));
-
map.enableDoubleClickZoom();
-
gGeo = new GClientGeocoder();
-
bounds = map.getBounds();
-
-
xy = map.getCenter();
-
document.getElementById("show_xy").value =xy.lat()+","+xy.lng();
-
center_point = new GLatLng(xy.lat(), xy.lng());
-
center_mark = new GMarker(center_point);
-
map.addOverlay(center_mark);
-
-
GEvent.addListener(map, 'moveend', function(){
-
var xy = map.getCenter();
-
-
document.getElementById("show_xy").value = xy.lat()+","+xy.lng();
-
-
map.removeOverlay(center_mark);
-
center_point = new GLatLng(xy.lat(), xy.lng());
-
center_mark = new GMarker(center_point);
-
map.addOverlay(center_mark);
-
});
-
}
-
-
function searchPoint() {
-
var address = document.getElementById("geoName").value;
-
gGeo.getLatLng(address, checkGeo);
-
}
-
function checkGeo(point) {
-
if (!point)alert("見つかりませんでした");
-
else map.setCenter(point, 17);
-
}
-
</script>
-
<?php }} ?>
add_meta_box()を使うと、詳細オプション下にタブを追加できます。
関連記事
- Newer: [WP]Wordpress オプションページの作成
- Older: [WP]管理ページに任意のメニューとページを追加する