MoonPhase

インストール

  • DownloadページよりMoonPhaseをダウンロードして、解凍してください。ファイルはZip形式で圧縮されています。
  • 解凍して得られたmoonphase.phpファイルをプラグインフォルダにアップロードし、パーミッションを適切に設定します。
  • プラグインフォルダ直下に「phaseimages」フォルダをコピー(・・・/plugins/phaseimages/)しパーミションを適切に設定します。これは、月相イメージの格納用ディレクトリです。月相イメージを表示しないなら、アップロードの必要はありません。
  • 管理画面で、moonphaseを有効化します。

詳細な設定
デフォルトでは月相イメージと月齢が投稿日時の後に表示されます。
月齢は、アーティクルの日付表示の後に「Moon:15.1」のように表示されます。
月相イメージ表示が不要なら、ソース中の

define(SHOW_IMAGE,True);

define(SHOW_IMAGE,False);

に変更することで非表示にできます。

月齢表示は、<span class="”moonphase”">Moon:15.1</span>とタグで囲われ、moonphaseというクラスがつきます。
したがって月齢表示文字列や月相イメージの表示位置などの調整はCSSでカスタマイズ可能で

.moonphase {
font-weight:bold;
color:#CCCCCC;
}
.moonphase img{
width: 13px; height: 13px;
margin:0px 0px -1px 0px;
}

等とすれば、月齢表示文字が「太字でグレー」、月相アイコンが13px四方でちょっと下寄りに表示といった感じで表示されるわけです。月齢は時刻とともに刻々と変化しています。新聞などでは月齢を当日の正午の時刻で表していることが多いようです。
Moonphaseでは月齢計算に用いる時刻を、「その記事が投稿された日の正午の時刻」と「その記事をまさに投稿した、そのときの時刻」で選択できるようにしています。

投稿日の正午の時刻で月齢計算するなら

define("JUSTNOW",引数)

の引数を「False」にします。(デフォルト)
投稿時の時刻を使って月齢計算するなら、「True」を指定してください。

月齢の他、潮汐や月の名が表示可能です。表示パターンは以下の4種類から選択できます。

表示例
0:2005/08/11 Thu 正午の月齢:5.0  Moon:6.0 -12:00:00(デフォルト)
1:2005/08/11 Thu 正午の月齢:5.0  Moon:6.0 潮汐:中潮 -12:00:00(月齢と潮汐)
2:2005/08/11 Thu 正午の月例:5.0  Moon:6.0[六日月] 潮汐:中潮 -12:00:00(月齢と月名と潮汐)
3:2005/08/11 Thu 正午の月齢:5.0  月名:六日月 -12:00:00(月名のみ)

-12:00:00(デフォルト)1:2005/08/11 Thu -12:00:00(月齢と潮汐)2:2005/08/11 Thu -12:00:00(月齢と月名と潮汐)3:2005/08/11 Thu -12:00:00(月名のみ)表示パターンの決定は、ソース中の

 define("PATTERN",0);

で設定を行います。引数「0」から「3」を指定できます。引数の数字は表示パターンを表し、ソース中のコメントや上記に記載した表示例を見て、適当なものを選んで下さい。

月相アイコンの表示の可否も指定できますので、都合8パターンの表示が可能です。
もちろん、コードを直接カスタムすればお好みの表示パターンも作成可能です。

では、月齢表示を楽しんでください。

Souce Code

<?php
/*
Plugin Name: MoonPhase
Plugin URI: <a href="http://www.chameleonic.org/plugin/">http://www.chameleonic.org/plugin/
Description: ポストされた投稿の日付を元に月齢を表示する。
Version: 1.0.8
Author: chameleon
Author URI: </a><a href="http://www.chameleonic.org/">http://www.chameleonic.org/</a>
*/
 
/*
月齢計算式のオリジナルソースは福原直人氏の「月齢計算 version 2.3 for JavaScript 1.1」(<a href="http://news.local-group.jp/topic/moonage.js.txt">http://news.local-group.jp/topic/moonage.js.txt</a>)です。
*/
 
/*
使い方
解凍した「moonphase.php」をpluginsディレクトリへ、さらに「phaseimages」ディレクトリをpluginsディレクトリの直下へアップロードしパーミッションを適切に設定する。
管理パネルから、moonphaseを有効化する。
 
月相イメージを表示するなら define("SHOW_IMAGE",引数)の引数を「True」にする。(デフォルト)
非表示なら、「False」を指定する。
 
投稿日の正午の時刻で月齢計算するなら define("JUSTNOW",引数)の引数を「False」にする。(デフォルト)
投稿時の時刻を使って月齢計算するなら、「Ture」を指定する。
*/
 
/*
改竄履歴
0.9.1 公開版
1.0.0 月齢をポストされた日の正午の時刻から求めるように変更。
  月齢表示の書式を整えた。
  $the_dateから取得した月齢がずれることがあるのを修正。
  月相のイメージを表示できるようにした。
  月の名と潮汐をツールチップで表示できるようにした。(IEのみ対応)
1.0.1 月相イメージのパスの取得方法を変更。(ひろまささん感謝です。)
1.0.2 投稿時刻の取得方法を変更。
1.0.3 投稿時の月齢を表示可能にした。
1.0.5 表示パターンを選択できるようにした。
1.0.8 コメントを詳細化、そのほか微調整。
*/
 
//月相イメージの表示の可否 True:表示 False:非表示
define("SHOW_IMAGE",True);
 
//True:投稿日の正午で月齢計算 False:投稿時の時刻で月齢計算
define("JUSTNOW",True);
 
//表示パターンの指定
define("PATTERN",0);
/*定数「PATTERN」にセットする値で、表示される項目を選択する。
 
 表示例 ただし投稿日時の表示形式はWordPressでの設定による。
 
 0: 2005/08/11 Thu ○ Moon:6.0 -12:00:00 (デフォルト)
 1: 2005/08/11 Thu ○ Moon:6.0 潮汐:小潮 -12:00:00 (月齢と潮汐)
 2: 2005/08/11 Thu ○ Moon:6.0[七日月] 潮汐:小潮 -12:00:00 (月齢と月名と潮汐)
 3: 2005/08/11 Thu ○ 七日月 -12:00:00 (月の名のみ)
 
 $phaseが月齢値 $tideが潮汐 $lunaが月の名ですので、好みの表示をカスタムすることもできます。
 
*/
 
function moonphase($the_date) {
 global $post;
 $past=$post->post_date;
 
 if($the_date==""){return $the_date;}
 
 if (!JUSTNOW){
  $pdate=date("Y/m/d 12:00:00", strtotime($past));
  $pword="正午";
 }else{
  $pdate=$past;
  $pword="投稿時";
 }
 
 $pdate=strtotime($pdate);
 $phase=moon($pdate);
 $tide=getTide($phase);
 $luna=getLuna($phase);
 if(SHOW_IMAGE) {
  $icon=get_settings('siteurl')."/wp-content/plugins/phaseimages/".images($phase);
  $alt="<img alt="{$pword}の月齢:$phase  月名:$luna  潮汐:$tide" src="http://www.chameleonic.org/$icon" />";
 }
 
 $the_date=$the_date . ' <span class="moonphase">' . $alt . " " . set_strings(PATTERN,$phase,$tide,$luna) . '</span>';
 return $the_date;
}
 
function set_strings($my_pattern,$phase,$tide,$luna){
 $pattern=array(
   'Moon:' . $phase,//デフォルト
   'Moon:' . $phase . ' 潮汐:' .$tide,//月齢と潮汐
   'Moon:' . $phase . '[' . $luna .']',//月齢と月の名
   'Moon:' . $phase . '[' . $luna . '] 潮汐:' .$tide,//月齢と月の名と潮汐
   '月名:' . $luna//月の名
  );
 $result=$pattern[$my_pattern];
 return $result;
}
 
function nmoon($j){
 $k = floor(($j - 2451550.09765) / 29.530589) ;
 $t = $k / 1236.85 ;
 $a = 2451550.09765 + 29.530589 * $k ;
 $b = 0.0001337 * $t * $t ;
 $c = 0.40720 * sin( ( 201.5643 + 385.8169 * $k ) * 0.017453292519943 ) ;
 $d = 0.17241 * sin( ( 2.5534 + 29.1054 * $k ) * 0.017453292519943 ) ;
 $m = $a + $b - $c + $d;
 return $m;
}
 
function moon($tm){
 $phase="0";
 $j = ( $tm / 86400.0 ) + 2440587.5;
 $m = nmoon($j);
 if( $m > $j ){
  $m = nmoon( ( $j - 1 ) );
 }
 //$phase = round( ($j - $m),1);
 $phase = number_format(($j - $m),1);
 return $phase;
}
 
//月相ファイル名の取得
function images($phase){
 $m_image = "moon_ph". str_pad(strval ( floor( $phase ) ),2,"0",STR_PAD_LEFT) . ".gif";
 return $m_image;
}
 
// 月齢から潮汐を求める
function getTide($phase) {
$tideName = array("","","","","","","","","","","","","","","","","","","","","","","","","","","","","","");
 return $tideName[floor($phase)%30]. "";
  }
 
// 月齢から月名を求める
function getLuna($phase) {
$moonName = array("新月","二日月","三日月","黄昏月","五日月","六日月","七日月","弓張月(上弦)","九日月","十日月","十日余の月","十二日月","十三夜","待宵月","十五夜","満月","立待月","居待月","寝待月","更待月","二十日余の月","二十二日月","弓張月(下弦)","真夜中の月","二十五日月","二十六夜","二十七日月","二十八日月","二十九日月","月隠");
 return $moonName[floor($phase)];
}
 
add_filter('the_date','moonphase');
?>

改竄履歴
0.9.1 公開版
1.0.0 月齢をポストされた日の正午の時刻から求めるように変更。
月齢表示の書式を整えた。
$the_dateから取得した月齢がずれることがあるのを修正。
月相のイメージを表示できるようにした。
月の名と潮汐をツールチップで表示できるようにした。(IEのみ対応)
1.0.1 月相イメージのパスの取得方法を変更。(ひろまささん感謝です。)
1.0.2 投稿時刻の取得方法を変更。
1.0.3 投稿時の月齢を表示可能にした。
1.0.5 表示パターンを選択できるようにした。
1.0.8 コメントを詳細化、そのほか微調整。

Download