WordPressで時差分ずれない著作権年号表示の仕方

フッターにある「Copyright © YYYY ・・・ 」のYYYYにあたる年号を自動的に表示する方法として、CODE 1を紹介していることがあります。

CODE 1

<?php echo date( 'Y' ); ?>

ただ、WordPressの2.9以降では、内部の時刻計算をGMT(Greenwich Mean Time:国際標準時)で行っているため、CODE 1 では日本との時差分9時間ずれてしまうことになるって知ってましたか?

まあ、微々たる差とは言え、やっぱりピタリと切り替えたいと思うのが人情というものではないでしょうか。そんな繊細な貴君に使ってもらいたいのが、CODE 2

CODE 2

<?php echo date_i18n( 'Y' ); ?>

date_i18n 関数の第2引数、第3引数を省略すると、自動的に現地時間の現在時刻を返すようになるので、時差の心配をしたり、計算し直す面倒な処理をする必要もなくなります。

WordPressで最新の記事公開日時を取得する方法

先日開催されたWordBench 川崎で星野さんが作成していたプラグイン「Hello Wapuu」の作成中に、「最新の更新日時は、get_lastpostmodified( ‘blog’ );で取れるのだけど、最新の公開日時はどうしたら取れるでしょうね?」と聞かれて、更新日時があるなら公開日時を取得する関数もありそうだなとは思いつつ、既に書かれているコードをちょっとだけ直す方法をお伝えしたのでした。

今日になって、最新の公開日時を取得する関数がないか気になって調べてみたら、、、
ありました!

get_lastpostdate( 'blog' );

get_lastpostdateは、投稿、固定ページ、カスタム投稿タイプなどの公開記事から最新のものを取得するようになっています。
キャッシュ機構も備わっているので、多用した場合でもデータベースクエリーが増えてしまうこともありません。
パラメータで使えるものは、gmt、blog、serverの3種類ですが、日本時間などローカルタイムで取得できるのは、blogになるので、これが一番使い勝手が良いと思います。

WordPressでマルチサイトでのみ使えるプラグインを作る方法

WordPressのプラグインにはネットワークでのみ有効にできるようにする方法があるのをご存じでしたか?

方法は簡単、プラグインをプラグインとして認識させるためには、ファイルの冒頭に書式に従ったコメントを記述する必要がありますが、このコメントに Network パラメータに true を指定するだけです。

/*
Plugin Name: Site Wides
Plugin URI: https://www.warna.info/archives/1634/
Description: マルチサイト専用プラグインテスト
Author: jim912
Version: 0.1
License: GPLv2 or later
Author URI: https://www.warna.info/
Network: true
*/

プラグインページを表示してみると、

ネットワーク専用のプラグイン

左がサイト管理のプラグインリスト、右がネットワーク管理のプラグインリスト。
ネットワークの方にのみ「Site Wides」のプラグインが表示されているのが分りますね。

ちなみに、この Network パラメータの指定は、大文字・小文字を区別しない true である必要があり、 TRUE でも True でも true でも tRuE でも有効とみなされますが、1yes などといったパラメータは受け付けてくれません。

Oni daiko みたいにネットワークでのみ動作するプラグインなどには有効ですね!

管理画面の語尾の全てに「ぷー」を追加するコード

書いたよ。

if ( is_admin() ) {
	function add_puu( $translated ) {
		$translated .= 'ぷー';
		return $translated;
	}
	add_filter( 'gettext', 'add_puu' );
	add_filter( 'gettext_with_context', 'add_puu' );
	add_filter( 'ngettext', 'add_puu' );
	add_filter( 'ngettext_with_context', 'add_puu' );
}

ほらね。

わがまま言いおって

if ( is_admin() ) {
	function add_puu( $translated ) {
		$translated = rtrim( $translated, '  。' );
		$translated .= 'だぷー';
		return $translated;
	}
	add_filter( 'gettext', 'add_puu' );
	add_filter( 'gettext_with_context', 'add_puu' );
	add_filter( 'ngettext', 'add_puu' );
	add_filter( 'ngettext_with_context', 'add_puu' );
}

WordPressの日付フォーマットから月の設定だけを抜き出す

パンくずナビのプラグインを公式ディレクトリに登録しようと思い、国際化しているときに気がついた。日本では「8月」とかでいいけど、海外は「Aug」とか、英語表記の方が一般的なのではないかと。。
設定画面を設ける手もあるけど、もっと簡単に日付フォーマットから月の表示設定を取得して、それを利用するのが良いのではと思いチャレンジ。

なんらか簡単に取得できる方法があるといいのだけど、分からなかったので日付フォーマットから正規表現(CODE 1)で抜き出すことにしました。バッククォートでのエスケープされた文字にマッチしないように一応気は使っています。

CODE 1

preg_match( '/(^|[^\\\\]+)(F|m|M|n)/', str_replace( '\\\\', '', get_option( 'date_format' ) ), $m );
if ( isset( $m[2] ) ) {
	$month_format = $m[2];
}

間違いや、もっとスマートな取得方法があったら教えて下さいね。

また、WordPressのちょっぴり便利な機能として

// 言語設定に応じた月のフルスペルの文字を取得。
$wp_locale->get_month( $monthnum );
// 言語設定に応じた月の省略形を取得
$wp_locale->get_month_abbrev( $wp_locale->get_month( $monthnum ) );

* $monthnumには月の数字
とすると、月の数字から言語に応じた月の表示形式に変換してくれます。

さて、どう実装するのがベストですかね。