J'essaie d'insérer par programme des commentaires dans une opération en bloc dans le cadre de la routine de migration. Les commentaires sont dans une table de serveur SQL.
Je reçois les informations de date du champ de la table du serveur SQL et les stocke dans une variable PHP comme ci-dessous;
while( $row = sqlsrv_fetch_array( $RS, SQLSRV_FETCH_ASSOC))
{
...
$the_date = $row['the_date'];
...
}
la vue var_dump du $ the_date est la suivante;
object(DateTime)#97 (3) {
["date"]=>
string(19) "2012-07-30 00:00:00"
["timezone_type"]=>
int(3)
["timezone"]=>
string(3) "UTC"
}
je prépare ensuite le tableau de données de mon wp_insert_comment.
var_dump vue de ce tableau de données comme suit;
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)
}
Après l'opération wp_insert_comment, je reçois un 0 en retour, ce qui indique une erreur.
Et le message suivant arrête tout le processus.
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
Comment puis-je contourner ce problème et stocker la date correctement? 2012-07-30 00:00:00
Il s'avère que nous devons extraire une chaîne de date de notre objet DateTime et la transmettre dans le paramètre comment_date.
$ comment_date = $ the_date-> format ('Y-m-d H: i: s');