php - 来自其他 MYSQL DB 的 wp_insert_post,出现 wordpress 错误

标签 php mysql wordpress

我正在尝试将网站从其他 CMS 迁移到 WordPress。我可以访问这个旧 CMS 的 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 - “无法插入到数据库”。 但我不明白,出了什么问题。 如果可以的话请帮忙:)

最佳答案

当删除此行 $dbh->query("SET NAMES 'cp1251'"); 时,我解决了问题;

关于php - 来自其他 MYSQL DB 的 wp_insert_post,出现 wordpress 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39019922/

相关文章:

mysql - 用新数据更新连接表

php - 将 SQL 数据库中的数据显示为拓扑

.htaccess - 当非管理员尝试访问 wp-admin 或 wp-login.php 时,如何将用户重定向到 404 页面未找到错误

python - sqlalchemy + flask ,按天获取所有帖子

php - 有没有办法获得注册的自定义帖子类型名称?

WordPress XML-RPC 错误 : XML-RPC services are disabled on this site

php - 如何将多对象关联 JSON 数组转换为 Javascript 数组

php - 有没有更简单的方法来编写此内容,以便显示最新条目而不是以前的条目?

php - 重试超时 CURL

php - 在 PHP 中调用 Go RPC 套接字方法