web-dev-qa-db-ja.com

wp_insert_commentエラー。日付値に戸惑う

移行ルーチンの一環として、一括操作でプログラム的にコメントを挿入しようとしています。コメントはSQLサーバーテーブルにあります。

SQLサーバーのテーブルフィールドから日付情報を受け取り、それを次のようにPHP変数に格納します。

    while( $row = sqlsrv_fetch_array( $RS, SQLSRV_FETCH_ASSOC))
    {
                   ...
        $the_date = $row['the_date'];
        ...
    }   

$ the_dateのvar_dumpビューは次のとおりです。

object(DateTime)#97 (3) {
  ["date"]=>
  string(19) "2012-07-30 00:00:00"
  ["timezone_type"]=>
  int(3)
  ["timezone"]=>
  string(3) "UTC"
}

それから、wp_insert_commentのデータ配列を準備します。
次のようにそのデータ配列のvar_dumpビュー。

array(7) {
  ["comment_post_ID"]=>
  string(5) "73615"
  ["comment_author"]=>
  string(14) "Joe  (USA)"
  ["comment_author_email"]=>
  string(20) "[email protected]"
  ["comment_content"]=>
  string(2001) "commment text here"
  ["comment_parent"]=>
  int(0)
  ["comment_date"]=>
  object(DateTime)#97 (3) {
    ["date"]=>
    string(19) "2012-07-30 00:00:00"
    ["timezone_type"]=>
    int(3)
    ["timezone"]=>
    string(3) "UTC"
  }
  ["comment_approved"]=>
  int(1)
}

Wp_insert_comment操作の後、私は0を返します - エラーを示します。

そして、次のメッセージはプロセス全体を止めます。

Warning: preg_match() expects parameter 2 to be string, object given in F:\inetpub\....\wp-includes\formatting.php on line 1868

Fatal error: Uncaught exception 'Exception' with message 'DateTime::__construct() expects parameter 1 to be string, object given' in F:\inetpub\....\wp-includes\formatting.php:1872 Stack trace: #0 F:\inetpub\....\wp-includes\formatting.php(1872): DateTime->__construct(Object(DateTime)) #1 F:\inetpub\....\wp-includes\comment.php(1238): get_gmt_from_date(Object(DateTime)) #2 F:\inetpub\...\comments.php(259): wp_insert_comment(Array) #3 F:\inetpub\...\comments.php(100): HandleComments(Resource id #25, '73615', 'services.articl...', 'XYZ1207-5206') #4 {main} thrown in F:\inetpub\....\wp-includes\formatting.php on line 1872

どうすればこの問題を回避し、日付を正しく保存できますか? 2012-07-30 00:00:00

2
Average Joe

DateTimeオブジェクトから日付文字列を取得し、代わりにそれをcomment_dateパラメータに渡す必要があることがわかりました。

$ comment_date = $ the_date-> format( 'Y-m-d H:i:s');

1
Average Joe