我以前在需要将大型数据集导入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";
希望这能帮助您了解如何导入数据。