WordPressで静的XMLを出力する。

lightweight google maps

このプラグインを使ったときに、さらにタグページにその地図を出せないかということになり、苦肉の策。
さすがにプラグインの改造までは勇気が出ないー。アップデートできなくなってしまう。

というわけで、tag.phpにアクセスするたびに静的XMLを出力することにしました。
後でタグごとのXMLを作ったり、もしかしたらキャッシュも考える予定。

カテゴリーとかカスタム投稿とかタクソノミーでも応用が利くと思われます。

[php]
<?php if(have_posts()): while (have_posts()) : the_post(); ?>
<!–普通のループ–>
<?php endwhile;?>

<?php rewind_posts();//巻き戻す

$putdata = "<?xml version=’1.0′ encoding=’UTF-8′?>\n<markers>\n";

while (have_posts()) : the_post(); //output xml

$Lat_Long = explode(",",post_custom("Lat_Long"));//緯度経度を分離。
$lat = $Lat_Long[0];//緯度
$long = $Lat_Long[1];//経度

$putdata .="<marker lat=’".$lat"’ lng=’".$long." title=’".get_the_title();"’ />"//出力データ。

endwhile;

$putdata .= "</markers>";

$xmlName = TEMPLATEPATH."/map_data.xml";//作成するファイルの名前

$mkfp = fopen($xmlName,"wb");//ファイルポインタ作成 空のファイル作成 上書きモード。中身消えます。

flock($mkfp,LOCK_EX);//ファイルをロック
fputs($mkfp,$putdata);//書き込む。
flock($mkfp,LOCK_UN);//ロック解放
fclose($mkfp);//開いたら閉じよう。

endif;?>

[/php]

もっと簡単にできそうな気もするが、一応これで。

XMLを吐ければいろいろ応用効きますねー。