0
私は他のCMSからワードプレスにウェブサイトを移動しようとしています。この古いCMSのmySql DBにアクセスできます。だから私は古いウェブサイトから新しいウェブサイトへのニュースを入手しようとしています。これは私のコードです:wp_insert_post他のMYSQL DBから、ワードプレスエラーが発生しました
<?php
error_reporting(E_ALL);
ini_set('display_errors', 1);
$hostname = "XXX.XX.XXX.XX";
$username = "myusername";
$password = "mypassw";
$dbName = "mydb";
$root = 2; //category on old website
$thema = 10; //subcategory on old website
$category = 17; //category on new website with wordpress
$enabled = '1'; //only enabled new on old website
$user_id = 1; //admin id in wordpress
$all = 0;
if(isset($_GET['offset']) && isset($_GET['all']))
{
$offset = $_GET['offset'];
$all = $_GET['all'];
}else{
$offset = 0;
//Getting number of all news...
try {
$dbh = new PDO('mysql:host='.$hostname.';dbname='.$dbName, $username, $password);
foreach($dbh->query("SELECT * FROM `news` WHERE `root` = ".$root." AND `thema` = ".$thema." AND `enabled` = '1'") as $row) {
$all++;
}
$dbh = null;
} catch (PDOException $e) {
print "Error!: " . $e->getMessage() . "<br/>";
die();
}
}
if($offset>$all)
{
echo "Ready...";
exit();
}
echo "All:".$all."<BR>";
try {
$dbh = new PDO('mysql:host='.$hostname.';dbname='.$dbName, $username, $password);
$dbh->query("SET NAMES 'cp1251'");
foreach($dbh->query("SELECT * FROM `news` WHERE `root` = ".$root." AND `thema` = ".$thema." AND `enabled` = '1' ORDER BY `news`.`id` ASC LIMIT ".$offset.", 30 ") as $row) {
$new_post = array(
'post_title' => $row['title'],
'post_content' => $row['text'],
'post_status' => 'publish',
'post_date' => date('Y-m-d H:i:s', $row['created']),
'post_author' => 1,
'post_type' => 'post',
'post_category' => array($category)
);
$post_id = wp_insert_post($new_post, true); //insert post (returns 0)
echo "<pre>";
print_r($post_id);
echo "</pre>";
echo $_POST['title']."<BR>done...<BR>";
}
$dbh = null;
} catch (PDOException $e) {
print "Error!: " . $e->getMessage() . "<br/>";
die();
}
$offset = $offset + 31;
echo 'wait..<meta http-equiv="refresh" content="5; url=get.php?offset='.$offset.'&all='.$all.'">';
このコードを開始すると、WP_Error - "データベースに挿入できませんでした"が表示されます。 しかし私は理解できません、何が間違っています。 できれば助けてください:
あなたのユーザーに書き込み権限がありますか?あなたのデータベースに次のクエリを送ることでチェックできます: 'SHOW GRANTS;'。 – bufh
これは行いません{foreach($ dbh-> query( "SELECT * FROM' news' WHERE 'root' ="。$ root。 "AND' thema' = "。$ thema" AND 'enabled' = '1' ORDER BY 'news'.'id' ASC LIMIT"。$ offset。 "、30")$行として){ }}。それは何か間違った結果を返すことがほぼ確実ですので、最初にクエリ結果を変数に代入してデバッグしてください。 – kkarpieszuk
MySqlユーザーは、私のWordPressのテーブルにすべての権限があるデータベースへの接続に使用します。しかし、スクリプトでは、まずリモートのmysqlホストに接続し、リモートのmysqlデータベースから情報を取得します – Evgeny