質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
jQueryプラグイン

jQueryの拡張機能。 様々な種類があり、その数は膨大です。公開済みのプラグインの他にも、自作することもできます。 jQueryで利用できるようにしておくだけで、導入およびカスタマイズが比較的容易に行なえます。

WordPress

WordPressは、PHPで開発されているオープンソースのブログソフトウェアです。データベース管理システムにはMySQLを用いています。フリーのブログソフトウェアの中では最も人気が高く、PHPとHTMLを使って簡単にテンプレートをカスタマイズすることができます。

Q&A

解決済

1回答

3835閲覧

WordPressのカスタムフィールドにjQueryUIのdatepickerを使って日付の入力すると更新時に1970/01/01になってしまいます。

gucci_daisuke

総合スコア13

jQueryプラグイン

jQueryの拡張機能。 様々な種類があり、その数は膨大です。公開済みのプラグインの他にも、自作することもできます。 jQueryで利用できるようにしておくだけで、導入およびカスタマイズが比較的容易に行なえます。

WordPress

WordPressは、PHPで開発されているオープンソースのブログソフトウェアです。データベース管理システムにはMySQLを用いています。フリーのブログソフトウェアの中では最も人気が高く、PHPとHTMLを使って簡単にテンプレートをカスタマイズすることができます。

0グッド

0クリップ

投稿2017/05/01 21:56

お世話になります。

WordPressのカスタム投稿タイプ(post_type == schedule)を利用し、イベントスケジュールのページを作りたいのですが、アーカイブページで表示するイベント開催日をカスタムフィールドでdatepickerを使って入力したところ、更新後に1970/01/01になってしまいます。

http://www.webopixel.net/wordpress/343.html#p03
こちらの記事を参考に、投稿ページにあらかじめカスタムフィールドを作ってdatepickerで日付を入れると、元々あるカスタムフィールド欄に指定通りの名前と値が追加されます。

ですが、日付を指定するカスタムフィールドの箇所が1970/01/01になってしまいます。。

イメージ説明

以下はfunction.phpの該当部分です。

php

1add_action( 'admin_init', 'schedule_date' ); 2function schedule_date() { 3 add_meta_box('schedule_date_meta', 'スケジュール日時(一覧ページ掲載用)', 'date_meta_html', 'schedule'); 4} 5function date_meta_html () { 6 global $post; 7 $custom = get_post_custom($post->ID); 8 //メタキーがあったら 9 if(!empty($custom)) { 10 $date_start = $custom["date_start"][0]; 11 //日付だけ表示 12 $sche_date = date("Y.m.d D", strtotime($date_start)); 13 } 14 echo '<input type="hidden" name="date-nonce" id="date-nonce" value="' . wp_create_nonce( 'date-nonce' ) . '" />'; 15 16 //入力フィールドの表示 17 ?> 18 <style type="text/css"> 19 #event-meta table th { 20 text-align: left; 21 font-weight: normal; 22 padding-right: 10px; 23 } 24 </style> 25 <div id="sche-meta"> 26 <table> 27 <tr> 28 <th>年月日</th> 29 <td><input name="sche_date" class="sche_date" id="datepicker" value="<?php if(isset ( $sche_date)) echo $sche_date; ?>" size="30" placeholder="日付を選択してください" /></td> 30 </tr> 31 </table> 32 </div> 33<?php 34} 35 36add_action ('save_post', 'save_date_meta'); 37function save_date_meta($post_id){ 38 global $post; 39 if ( !wp_verify_nonce( $_POST['date-nonce'], 'date-nonce' )) { 40 return $post_id; 41 } 42 if ( !current_user_can( 'edit_post', $post->ID )) { 43 return $post_id; 44 } 45 $temp_date = $_POST['sche_date']; 46 $date_start = date('Y.m.d D', strtotime($temp_date)); 47 48 update_post_meta($post->ID, 'date_start', $date_start); 49} 50 51function meta_datepicker() { 52 global $post_type; 53 if( 'schedule' == $post_type || 'works' == $post_type ) { 54 wp_enqueue_style('ui-datepicker', get_bloginfo('template_url') . '/assets/css/jquery-ui.min.css'); 55 wp_enqueue_script('ui-datepicker', get_bloginfo('template_url') . '/assets/js/jquery-ui.min.js'); 56 wp_enqueue_script('datepicker-ja', get_bloginfo('template_url') . '/assets/js/datepicker-ja.js'); 57 wp_enqueue_script('datepicker', get_bloginfo('template_url') . '/assets/js/datepicker.js'); 58 } 59} 60add_action( 'admin_print_styles-post.php', 'meta_datepicker', 1000 ); 61add_action( 'admin_print_styles-post-new.php', 'meta_datepicker', 1000 );

datepicker-ja.js

javascript

1/* Japanese initialisation for the jQuery UI date picker plugin. */ 2/* Written by Kentaro SATO (kentaro@ranvis.com). */ 3( function( factory ) { 4 if ( typeof define === "function" && define.amd ) { 5 6 // AMD. Register as an anonymous module. 7 define( [ "../widgets/datepicker" ], factory ); 8 } else { 9 10 // Browser globals 11 factory( jQuery.datepicker ); 12 } 13}( function( datepicker ) { 14 15datepicker.regional.ja = { 16 closeText: "閉じる", 17 prevText: "&#x3C;前", 18 nextText: "次&#x3E;", 19 currentText: "今日", 20 monthNames: [ "1月","2月","3月","4月","5月","6月", 21 "7月","8月","9月","10月","11月","12月" ], 22 monthNamesShort: [ "1月","2月","3月","4月","5月","6月", 23 "7月","8月","9月","10月","11月","12月" ], 24 dayNames: [ "日曜日","月曜日","火曜日","水曜日","木曜日","金曜日","土曜日" ], 25 dayNamesShort: [ "Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat" ], 26 dayNamesMin: [ "日","月","火","水","木","金","土" ], 27 weekHeader: "週", 28 dateFormat: "yy/mm/dd", 29 firstDay: 0, 30 isRTL: false, 31 showMonthAfterYear: true, 32 yearSuffix: "年" }; 33datepicker.setDefaults( datepicker.regional.ja ); 34 35return datepicker.regional.ja; 36 37} ) );

datepicker.js

javascript

1(function($) { 2 $(function() { 3 $('#datepicker').datepicker({ 4 minDate: new Date() 5 }); 6 }); 7})(jQuery);

お分かりになる方、ご教授のほど宜しくお願い致します。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

yuki84web

2017/05/01 23:04

DBの値は確認しましたか?
guest

回答1

0

ベストアンサー

例えば下記のように書くと 1970.01.01 Thu になります。

PHP

1echo date('Y.m.d D', strtotime('2017.05.02 Thu')); 2// 1970.01.01 Thu

テキストで保存すればよいのでは?

PHP

1// $sche_date = date("Y.m.d D", strtotime($date_start)); 2// ↓ 3 $sche_date = $date_start; 4

PHP

1// $date_start = date('Y.m.d D', strtotime($temp_date)); 2// ↓ 3 $date_start = $temp_date;

投稿2017/05/02 02:50

kei344

総合スコア69400

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

gucci_daisuke

2017/05/02 06:33

回答ありがとうございます。ご指摘の保存方法で望んだ形に反映されました。 日付関数の部分で理解が足らなかったようです。勉強になりました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問