web-dev-qa-db-fra.com

Impossible de faire fonctionner wp_insert_post

J'essaie de coder une boucle qui publiera des articles d'une base de données SQL. Cependant, chaque fois que j'essaie de charger la page, l'erreur 500 s'affiche et rien ne s'affiche dans les journaux des erreurs.

Code:

<?php
define('WP_USE_THEMES', false);
require('wp-load.php');
global $wpdb;

$sql = "SELECT * FROM newposts";
$result = $wpdb->query($sql);  
while($row = $result->fetch_assoc()) {
$post = array(
     'post_title' => $row['post_title'],
     'post_content' => $row['post_content'],
     'post_date' => $row['post_date'],
     'post_status' => 'publish',
     'post_author' => 1,
     'post_category' => 1
  );
wp_insert_post( $post );
echo "inserted post {$row['post_title']}";
echo "<br />";
}
?>

Wordpress étant assez nouveau pour moi, je ne sais pas vraiment si j'utilise correctement $ wpdb ou la fonction de post-insertion. En outre, le fichier est placé dans le même répertoire que wp-load, wp-config, etc. Et le site est exécuté sur bluehost, si cela signifie quelque chose (je ne sais pas).

Merci pour votre temps!

1
angela

C'est parce que vous essayez de définir une propriété déjà définie, d'interroger une table avec un nom incorrect, de parcourir un entier alors que vous pouvez utiliser get_results au lieu de la méthode query de $wpdb ...

J'ai édité le code, j'espère que cela vous aidera dans votre processus de duplication de publication:

defined('WP_USE_THEMES') || define('WP_USE_THEMES', false);
require_once('wp-load.php');
global $wpdb;
$sql = "SELECT * FROM {$wpdb->prefix}newposts";
$result = $wpdb->get_results($sql);  
foreach ( $result as $row ) :;
    $row = (array) $row;
    $post = array(
        'post_title' => $row['post_title'],
        'post_content' => $row['post_content'],
        'post_date' => $row['post_date'],
        'post_date_gmt' => $row['post_date_gmt'],
        'post_status' => 'publish',
        'post_author' => 1,
        'post_category' => array(1)
    );
    wp_insert_post( $post );
    echo "inserted post {$row['post_title']}";
    echo "<br />";
endforeach;
1
Samuel Elh