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上で実行されています(私は知らない)。
御時間ありがとうございます!
これは、すでに定義されているプロパティを定義し、間違った名前でテーブルをクエリし、整数をループしようとしているときに、 の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;