it-swarm.com.de

Kann wp_insert_post nicht zum Laufen bringen

Ich versuche, eine Schleife zu codieren, die Artikel aus einer SQL-Datenbank veröffentlicht. Wenn ich jedoch versuche, die Seite zu laden, wird ein 500-Fehler angezeigt und in den Fehlerprotokollen wird nichts angezeigt.

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 />";
}
?>

Ich bin ziemlich neu in WordPress, daher weiß ich nicht wirklich, ob ich $ wpdb oder die Funktion zum Einfügen von Beiträgen richtig verwende. Außerdem befindet sich die Datei im selben Verzeichnis wie wp-load, wp-config usw. Und die Site läuft auf bluehost, wenn das etwas bedeutet (ich weiß es nicht).

Vielen Dank für Ihre Zeit!

1
angela

Das liegt daran, dass Sie versuchen, eine bereits definierte Eigenschaft zu definieren, eine Tabelle mit einem falschen Namen abzufragen, eine Ganzzahl durchlaufen, während Sie get_results anstelle der query-Methode von $wpdb ... verwenden können.

Ich habe den Code bearbeitet und hoffe, dass er Ihnen bei Ihrem Post-Duplizierungsprozess hilft:

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