将数据导入WordPress数据库

时间:2014-11-09 作者:rajesh

您好,我目前正在使用wordpress 4.0 multisite(bitnami multisite stack),并使用WPMU目录插件创建商业评论目录。

使用WPMU目录插件中包含的custompress创建一些自定义字段。我需要导入本地mysql安装上的300多万个业务数据。

尝试使用WP ultimate csv导入器(免费),导入自定义帖子(由目录插件创建)中的所有自定义字段,但未正确导入listing\\u标记(post\\u标记)和listing\\u类别(post\\u类别)。而其他csv导入程序没有导入自定义字段的选项。

有一些mysql的基本知识,所以如果我需要使用本地mysql安装创建各种表,并将数据目录导入wordpress mysql数据库,我很乐意这样做。

但是,有人能告诉我创建一个查询来生成相同的查询,并了解如何进行。

1 个回复
SO网友:Seamus Leahy

我以前在需要将大型数据集导入WordPress时遇到过这个问题。导入程序开始失败。我建议创建一个自定义PHP脚本,从非WP数据库读取值,然后使用WordPress函数将其插入WordPress。这样,我们确保所有后台数据处理都在WordPress中进行。

第一件事是设置脚本。我们将从命令行运行脚本,因为它不会遇到PHP在网页上运行时通常遇到的超时限制。

在WordPress根目录中,创建一个新文件import-data.php:

<?php
// Include WordPress functions
define(\'WP_USE_THEMES\', false);
require(\'./wp-blog-header.php\');

echo "It Works\\n";
从命令行转到WordPress目录并运行:php import-data.php. 你应该看看It Works 打印出来。

从这里开始,我只能在剩下的过程中为您提供一般性帮助,因为我不知道您的数据的示意图。

现在,您需要对非WP数据库执行自己的MySQL查询

<?php
// Include WordPress functions
define(\'WP_USE_THEMES\', false);
require(\'./wp-blog-header.php\');

// Do you MySQL database connection and query here
$original_data = array(/* ... placeholder */);
假设每条记录都是带有自定义字段数据的帖子。您需要首先创建包含基本字段(如标题和内容)的post对象。它还包含要手动设置的字段,例如post_type 如果使用自定义post_type 或者post_status 默认情况下发布。

创建post对象后,您将获得插入自定义字段所需的post ID。

foreach ($original_data as $data) {
   // Useful to see where we are in the import process
  echo "Inserting record ", $data[\'id\'], "\\n";

  // First create the new post object
  // See: http://codex.wordpress.org/Function_Reference/wp_insert_post
  $post_data = array( \'post_title\' => $data[\'name\'], \'post_type\' => \'product\', \'post_status\' => \'publish\' );
  $post_id = wp_insert_post( $post_data );

  // Insert custom post data
  // See: http://codex.wordpress.org/Function_Reference/add_post_meta
  add_post_meta($post_id, \'price\', $data[\'Price\']);
  add_post_meta($post_id, \'quantity\', $data[\'q\']);

  // What if you also want taxonomy terms?
  // See: http://codex.wordpress.org/Function_Reference/wp_set_post_terms
  wp_set_post_terms( $post_id, array($data[\'style\']), \'styles\' );
}
echo "Finished\\n";
希望这能帮助您了解如何导入数据。

结束