DatePickerの日本語化 (WordPress カスタムフィールドテンプレート プラグイン)

jQuery.UI の jquery.ui.datepicker-ja.js を利用すれば大丈夫でしょ、とおもいきや $.datepicker.regional['ja'] が使えないという…。jQuery.UIにバンドルされているDatePickerではないかもしれないので、妥当なのかもしれない。で、どう日本語化するか。



シンプルに考えると、January、February とかが日本語の月名表示できれば要件を満たせる。カスタムフィールドテンプレートのファイル群を探すと、date.js の中に記述があった。

Date.monthNames = ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'];

ここを上書きすればok。

custom-field-template.php

WordPress のプラグインをアップデートすると消えちゃうんで、とりあえずjsだけは外部ファイル化することにしました。custom-field-template.php の556行目あたりに、下記の jquery.datepicker-ja.js の行を足しこみます。jquery.datePicker.js のあとに読み込まないとダメかも。

if ( !defined('WP_PLUGIN_DIR') )
        $plugin_dir = str_replace( ABSPATH, '', dirname(__FILE__) );
else
        $plugin_dir = dirname( plugin_basename(__FILE__) );

wp_enqueue_script( 'jquery' );
wp_enqueue_script( 'jquery-form' );
wp_enqueue_script( 'date', '/' . PLUGINDIR . '/' . $plugin_dir . '/js/date.js', array('jquery') );
wp_enqueue_script( 'bgiframe', '/' . PLUGINDIR . '/' . $plugin_dir . '/js/jquery.bgiframe.js', array('jquery') ) ;
wp_enqueue_script( 'datePicker', '/' . PLUGINDIR . '/' . $plugin_dir . '/js/jquery.datePicker.js', array('jquery') );
wp_enqueue_script( 'datePickerLung', '/' . PLUGINDIR . '/' . $plugin_dir . '/js/jquery.datepicker-ja.js', array('jquery') );
wp_enqueue_script( 'textarearesizer', '/' . PLUGINDIR . '/' . $plugin_dir . '/js/jquery.textarearesizer.js', array('jquery') );
if( strstr($_SERVER['REQUEST_URI'], 'wp-admin/post-new.php') || strstr($_SERVER['REQUEST_URI'], 'wp-admin/post.php') || strstr($_SERVER['REQUEST_URI'], 'wp-admin/page-new.php') || strstr($_SERVER['REQUEST_URI'], 'wp-admin/page.php') || (is_object($post) && $post->post_type=='page') ) :
        wp_enqueue_script('editor');
        wp_enqueue_script('quicktags');
endif;

※プラグインの直接編集ですので、プラグインアップデートすると毎度消えちゃいます。

jquery.datepicker-ja.js

次の内容を jquery.datepicker-ja.js に記述して、プラグインのjsフォルダに放り込みます。
jQuery(function(){
        Date.monthNames = ['1月','2月','3月','4月','5月','6月','7月','8月','9月','10月','11月','12月'];
});

[追記] プラグインをアップデートするとフォルダごと初期化される

WordPressの管理画面からプラグインをアップデートすると、フォルダごと初期化されるみたい。追加したファイルも削除されるため、カスタムフィールドテンプレートをアップデートしたら見事に jquery.datepicker-ja.js も消えてしまう事態に。仕方ないので functions.php に記述して対応することにした、要はJavaScriptを上書きできればいい。

/*
 * カスタムフィールドテンプレートでDatePickerの月表示を日本語化
 * 2012-3-17 (+)Luvsic
 * http://luvsic.net/item/158
 *
 */


function admin_js() {
  echo '<script type="text/javascript">
  jQuery(function(){
   Date.monthNames = [\'1月\',\'2月\',\'3月\',\'4月\',\'5月\',\'6月\',\'7月\',\'8月\',\'9月\',\'10月\',\'11月\',\'12月\'];
  });</script>'
;
}
add_action('admin_head', 'admin_js');

管理画面の全ページでこのコードが出ちゃうけど、プラグインの機能を上書きする記述方法がわからないので暫定的。

/
Skooler Records

No comments yet

%3c%69%6e%70%75%74%20%74%79%70%65%3d%22%68%69%64%64%65%6e%22%20%6e%61%6d%65%3d%22%6e%70%5f%70%72%6f%74%65%63%74%62%79%6d%64%35%22%20%76%61%6c%75%65%3d%22%38%62%31%65%65%34%30%64%34%63%62%62%66%30%64%66%64%36%34%37%31%62%34%64%34%31%37%61%65%31%31%62%22%3e %3c%69%6e%70%75%74%20%74%79%70%65%3d%22%68%69%64%64%65%6e%22%20%6e%61%6d%65%3d%22%6e%70%5f%70%72%6f%74%65%63%74%62%79%6d%64%35%5f%68%61%73%68%22%20%76%61%6c%75%65%3d%22%35%32%62%35%33%30%61%66%38%65%65%36%65%61%64%61%61%63%32%36%34%37%32%32%37%61%63%63%38%32%30%37%22%3e
© 2006 – 2014 by Luvsic. Some rights reserved.