web-dev-qa-db-ja.com

Wp_insert_postを機能させることができません

SQLデータベースから記事を投稿するループをコーディングしようとしています。ただし、ページを読み込もうとすると必ず500エラーが発生し、エラーログには何も表示されません。

コード:

<?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が初めてなので、$ wpdbを使用しているのかinsert post関数を正しく使用しているのかがわかりません。また、ファイルはwp-load、wp-configなどと同じディレクトリに置かれます。そしてそれが何かを意味するのであれば、サイトはbluehost上で実行されています(私は知らない)。

御時間ありがとうございます!

1
angela

これは、すでに定義されているプロパティを定義し、間違った名前でテーブルをクエリし、整数をループしようとしているときに、 queryメソッドの代わりにget_results$wpdb ...

コードを編集しました。複製後のプロセスに役立つことを願っています。

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