我需要每天将用户导入我的WP数据库一次。所以我有一个每天运行一次的脚本来执行一个操作。我现在的问题是,在这件事上我有点不知所措。
另一家公司在中为我提供用户数据。csv文件。然后,我需要将此文件导入我的WP数据库。
我每天运行一次的脚本如下(这在我的functions.php中):
add_action( \'wp\', \'prefix_setup_schedule\' );
/**
* On an early action hook, check if the hook is scheduled - if not, schedule it.
*/
function prefix_setup_schedule() {
if ( ! wp_next_scheduled( \'prefix_hourly_event\' ) ) {
wp_schedule_event( time(), \'hourly\', \'prefix_hourly_event\');
}
}
add_action( \'prefix_hourly_event\', \'prefix_do_this_hourly\' );
/**
* On the scheduled action hook, run a function.
*/
function prefix_do_this_hourly() {
wp_mail( \'user@domain.com\', \'Automatic email sent at \'.time(), \'Automatic scheduled email from WordPress.\');
}
在服务器上运行一个cronjob,激活
wp-cron.php
每天一次。如果没有任何用户,脚本将不会运行,因此我将激活它。一旦有活动,它就会运行。
这是一个每小时发送一封电子邮件的简单工作示例。现在我需要导入用户。
以下是我的发现:
LOAD DATA INFILE \'path/to/file/users.csv\'
INTO TABLE discounts
FIELDS TERMINATED BY \',\'
ENCLOSED BY \'"\'
LINES TERMINATED BY \'\\n\'
IGNORE 1 ROWS;
我不知道这是否有效,我还没到那里。我现在面临的问题是WordPres的usersystem存在两个表
wp_user
和
wp_usermeta
.
有谁能告诉我,我是否走上了正确的道路,以及如何解决这个问题。有没有一种方法可以将。csv文件,并选择要导入的内容,包括user
和usermeta
桌子?
M、 罢工>
我改变了思维方式,想做以下事情:
$row = 1;
ini_set(\'auto_detect_line_endings\',TRUE);
if (($handle = fopen(get_bloginfo(\'template_directory\')."/import_test.csv", "r")) !== FALSE) {
while (($data = fgetcsv($handle, 1000, ";")) !== FALSE) {
$num = count($data);
echo "<p> $num fields in line $row: <br /></p>\\n";
$row++;
for ($c=0; $c < $num; $c++) {
echo $data[$c] . "<br />\\n";
}
}
fclose($handle);
}
这是来自的直接副本
http://php.net/fgetcsv.
现在我想用
wp_create_user
函数添加用户
同时,我需要向该用户添加user\\u meta(我想)。有什么想法吗?我可以添加一个带有元字段的用户,并从csv文件中选择与
vars
?
编辑-
我已经做了这么多,但最后一部分没法完成。我已经修复了添加新用户的问题
foreach通过csv循环添加所有用户:
$filepath = get_bloginfo(\'template_directory\')."/import_test.csv";
ini_set(\'auto_detect_line_endings\',TRUE);
$file = fopen($filepath, "r") or die("Error opening file");
$i = 0;
while(($line = fgetcsv($file, 1000, ";")) !== FALSE) {
if($i == 0) {
$c = 0;
foreach($line as $col) {
$cols[$c] = $col;
$c++;
}
} else if($i > 0) {
$c = 0;
foreach($line as $col) {
$data[$i][$cols[$c]] = $col;
$c++;
}
}
$i++;
}
foreach ($data as $gebruiker){
$username = $gebruiker[\'username\'];
if ( username_exists( $username ) ){
$user = get_user_by( \'login\', $username);
update_user_meta( $user->ID, \'meta_key\', $gebruiker[\'email\'] );
}
else{
$users = wp_insert_user(
array(
\'user_login\' => $gebruiker[\'username\'],
\'user_pass\' => $gebruiker[\'password\'],
\'first_name\' => $gebruiker[\'first_name\'],
\'last_name\' => $gebruiker[\'last_name\'],
\'user_email\' => $gebruiker[\'email\'],
\'display_name\' => $gebruiker[\'first_name\'] . \' \' . $gebruiker[\'last_name\'],
\'nickname\' => $gebruiker[\'first_name\'] . \'\' . $gebruiker[\'last_name\'],
\'role\' => \'subscriber\'
)
);
foreach ($data as $update_user) {
update_user_meta( $users, \'import_1\', $update_user[\'first_name\'] );
update_user_meta( $users, \'import_2\', $update_user[\'last_name\'] );
}
}
}
将文件添加到
wp_usermeta
我要使用的表
update_user_meta
自
wp_insert_user
返回刚创建的用户的ID。
但不管我把update_user_meta
在循环中,它返回以下错误:Fatal error: Cannot use object of type WP_Error as array in
错误已修复。因为用户allready已经存在。所以需要稍后检查。这意味着字段被添加到usermeta中,但为空
======编辑========
以上代码是最终代码,正在运行。。。