EDIT: Réécrire la page à partir de zéro et ont été incapables de comprendre les différences. La nouvelle page fonctionne comme prévu.
Vérifié plusieurs questions ici et aussi sur Wordpress.org sans aucune chance pour le moment. Vous trouverez ci-dessous le code que j'utilise dans plusieurs pages pour prendre d'anciens enregistrements et les brancher dans la base de données (sans aucun problème sur ces pages). Il y a plus de code plus loin dans la page mais c'est là que j'ai des problèmes. Cela ne fonctionne pas sur une page.
Je ne reçois aucune erreur, même avec $ wpdb-> show_errors (); La seule sortie que je reçois est après avoir utilisé $ wpdb-> print_error (), ce qui me donne la sortie:
`WordPress database error: []
SHOW FULL COLUMNS FROM `wp_posts`
$ new_id = $ wpdb-> insert_id; $ new_id à ce stade est 0 car rien n'a été inséré dans la base de données (vérifié via PHPMyAdmin).
J'ai essayé d'indiquer les types de données que je transmettais dans l'insert (via le troisième tableau de '% s', etc.), mais j'ai obtenu les mêmes résultats.
Toute recommandation d'autres tests ou solutions de contournement serait appréciée.
======================
function transfer_officer($old_record) {
global $wpdb;
$wpdb->show_errors();
$status = 'publish';
$old_id = $old_record[0];
$name = $old_record[1];
$post_date = date('Y-m-d h:i:s');
$post_data = array(
'post_author' => 1,
'post_date' => $post_date,
'post_date_gmt' => $post_date,
'post_content' => '',
'post_title' => $name,
'post_excerpt' => '',
'post_status' => $status,
'comment_status' => 'closed',
'ping_status' => 'closed',
'post_password' => '',
'post_name' => officer_name_to_slug($name),
'to_ping' => '',
'pinged' => '',
'post_modified' => $post_date,
'post_modified_gmt' => $post_date,
'post_content_filtered' => '',
'post_parent' => 0,
'menu_order' => 0,
'post_type' => 'rb_board_officers_posts',
'post_mime_type' => '',
'comment_count' => 0
);
//put into post table
$wpdb->insert('wp_posts', $post_data);
$wpdb->print_error();
var_dump($wpdb);
$new_id = $wpdb->insert_id;
J'ai le même problème.
Solution 1: Supprimez vos données. Wordpress rejette la requête si la longueur de la valeur est supérieure à la longueur du champ définie dans la base de données.
Dans votre requête d'insertion, la valeur du champ post_type dépassait la limite de 20 caractères.
Solution 2: Utilisez la méthode de requête $ wpdb->
Avez-vous essayé d'utiliser des données saisies manuellement pour voir si elles étaient insérées? Composez simplement des éléments pour remplacer les variables. Vérifiez également que post_author est autorisé à insérer des publications.
Une autre option consiste à essayer wp_insert_post () et voir si cela fonctionne.