Tag Archives: PHP

WordPressの古い日付

Friday 6 November 2009

(現在のバージョン2.8の)WordPressの日付・時刻は、1970年1月1日午前0時から始まります。それより前の時刻の記事(たとえば、1969年12月31日)を作成しても、通常のthe_time()関数での表示は閲覧時点の日付・時刻になってしまいます。
これは世界標準時なので、日本標準時で使う場合は1970年1月1日の午前9時より前の日付・時刻が使えません。

しかし、WordPressの記事自体は、MySQLの中に0000-00-00 00:00:00の形式で保存されています。将来的には、WordPress自体が対応してくれることを望みます。

で、あるアーカイブで古い文書を公開しているのですが、そこで1969年以前の日付を使いたいということになりました。前述の通り、幸いにもデータそのものは自由な日付を入力できるので、あとはそれを読み出して表示する関数を書けば対応できるだろうということになります。

というわけで、ここらへんを参考にPHPで初めて関数を書きました。(*^_^*)


<?php
function wp_date_in_mysql( $postid )
{
  $sql_command = 
    "SELECT post_date FROM wp_posts WHERE ID='$postid'";
  $result_resource = mysql_query( $sql_command );
  if ( ! $result_resource ){
    echo mysql_error(); 
  } else {
    $the_record = mysql_fetch_array( $result_resource );
    $datestring = 
      substr( $the_record[ 'post_date' ], 0,10 );
    return str_replace( "-", "/", $datestring );
  }
}
?>

呼び出し側は、$s = wp_date_in_mysql( $post->ID );のように記事のIDを渡します(ループの中で使います)。
関数内では、MySQLのクエリーでその記事のレコードを読みだしています。
今回の仕事では、時刻のデータが不要だったので、まずsubstr()関数で0文字目から10文字分を切り出し、0000-00-00の形にしています。
次に、str_replace()関数で区切り記号を-(ハイフン)から/(スラッシュ)に置き換えています。

これを使ってもダッシュボードでは古い日付は正しく表示されないのですが、WordPressのコード自体をいじるのではなく、テーマのファイルに書き加えるだけなので、しばらくは使えるかな、という気がしています。

カテゴリーごとのバナー広告

Sunday 25 October 2009

このサイトのサイドバーに、正方形のバナー広告を掲載しています。バナーは主にリンクシェアというところを通して配信されています。といっても、まあそんなに大量のアクセスがあるわけでもなく、アフィリエイト収入なんてたかが知れているのですが、一応いまさらながら、記事ごとに違うバナーが表示されるようにしてみました。


<?php
/* set weekday number. */
$today = date("w");

/* set banner links. */
$itunesfreebanner = 'link1';
$bosemobilebanner = 'link2';
$act2macosxbanner = 'link3';

if ( in_category( 'iphone' ) ){
    print( '<p>'.$bosemobilebanner.'</p>'  );
} elseif ( in_category( 'Mac' ) ){
    ( '<p>'.$act2macosxbanner.'</p>'  );
} else	if ( $today >= '2' && $today <= '5' ){
    print( '<p>'.$itunesfreebanner.'</p>' );
} else {
    print( '<p>'.$itunesrecommendbanner.'</p>' );
}
?>

link1, link2…のところに、バナーのコードを入れます。
記事のカテゴリーが「iphone」のときは「ボーズモバイルヘッドセット」、「Mac」のときは「act2」、それ以外は「iTunes」のバナーになります。
iTunesのバナーは、火曜日に無料ダウンロードの曲が更新されるようなので、火曜から金曜(date(“w”)で得られる曜日番号が2〜5のとき)はそれを、土曜から月曜は自動ローテーションのバナーが表示されます。

こういうのは、JavaScriptでやった方がサーバーに負担がない、という考え方もあるかもしれませんが、ユーザーがオフにしちゃうこともあるわけで、PHPの方が確実に表示させることができるという感じでしょうか。

PHPのメモリー

Tuesday 15 January 2008

新しいサーバーに移行した後、WordPressをインストールしたところ、動かなくてアセりました。MovableTypeは動いているので、MySQLサーバーは動いているらしい。PHPも簡単なものは動作しているのだけれど、WordPressにログインできない…。

で、結局、サーバーの設定で、/etc/php.iniの一部箇所を以下のように「8M」から「32M」と変更するということでした。

変更前 memory_limit = 8M
変更後 memory_limit = 32M ← 数値を変更

とまあ、PHPが使えるメモリーが足りなかったということでしょうか。とにかく、そういうことで動くようになりました。

追記:2011年4月)その後、32Mでも足りないのか、自動アップデートがいつまでたっても終わらない(最初にこの記事を書いた頃には、WordPressに自動アップデートの機能なんてありませんでした)。そこで、64Mに設定。php.iniを変更後、httpdをrestartしました。