| 开发者 |
hissy
websoudan |
|---|---|
| 更新时间 | 2026年7月16日 16:10 |
| PHP版本: | 3.6 及以上 |
| WordPress版本: | 7.0 |
| 版权: | GPLv2 or later |
| 版权网址: | 版权信息 |
/wp-content/plugins/really-simple-csv-importer/sample directory.
Available column names and values:
ID or post_id: (int) post id.
This value is not required. The post ID is already exists in your blog, importer will update that post data. If the ID is not exists, importer will trying to create a new post with suggested ID.post_author: (login or ID) The user name or user ID number of the author.post_author_login: The user name of the author.post_date: (string) The time of publish date.post_content: (string) The full text of the post.post_title: (string) The title of the post.post_excerpt: (string) For all your post excerpt needs.post_status: ('draft' or 'publish' or 'pending' or 'future' or 'private' or custom registered status) The status of the post. 'draft' is default.post_password: (string) The password to protect the post. The password is limited to 20 characters.post_name: (string) The slug of the post.post_parent: (int) The post parent id. Used for page or hierarchical post type.menu_order: (int)post_type: ('post' or 'page' or any other post type name) (required) The post type slug, not labels.post_thumbnail: (string) The uri or path of the post thumbnail.
E.g. http://example.com/example.jpg or /path/to/example.jpgpost_category: (string, comma separated) slug of post categoriespost_tags: (string, comma separated) name of post tagstax_{taxonomy}: (string, comma separated) Any field prefixed with tax_ will be used as a custom taxonomy. Taxonomy must already exist. Entries are names or slugs of terms.{custom_field_key}: (string) Any other column labels used as custom fieldcfs_{field_name}: (string) If you would like to import data to custom fields set by Custom Field Suite, please add prefix cfs_ to column header name.scf_{field_name}: (string) If you would like to import data to custom fields set by Smart Custom Fields, please add prefix scf_ to column header name.comment_status: ('closed' or 'open') Default is the option 'default_comment_status', or 'closed'.
Note: Empty cells in the csv file means "keep it", not "delete it".
Note: To set the page template of a page, use custom field key of _wp_page_template.
Note: If providing a post_status of 'future' you must specify the post_date in order for WordPress to know when to publish your post.
Note: If the post_type value is attachment, you can use post_thumbnail field to define media URL or path./wp-content/plugins/ directory.No. Only columns which you want to update.
Yes. Please use ID field to specify the existing post.
Yes. Please use ID field to specify the new post ID.
Yes. You can use column names same as wp_post table, but if the column name does not match, it creates a custom field (post meta) data. Importing custom taxonomy is a bit more complicated, "tax_{taxonomy}" means, "tax_" is prefix, and {taxonomy} is name of custom taxonomy (not labels). Here is an example. csv file "post_title","released","tax_actors" "Captain Phillips","2013","Tom Hanks, Barkhad Abdi, Barkhad Abdirahman" imported post data Post Title: Captain Phillips Custom field "released": 2013 Custom taxonomy "Actors": Tom Hanks, Barkhad Abdi, Barkhad Abdirahman
Because PHP cannot read multibyte text cells in some cases.
Locale setting is taken into account by this function. If LANG is e.g. en_US.UTF-8, files in one-byte encoding are read wrong by this function.
Yes. Please create additional plugin and use really_simple_csv_importer_save_meta filter to make array data.
Add-on development example
Here is an example, assuming you have a field called cf47rs_images, format the csv cell data as,
http://localhost/websitename/photos/photo12345-1.jpg|http://localhost/websitename/photos/photo12345-2.jpg|http://localhost/websitename/photos/photo12345-3.jpg
or some other urls of files you want to import, and then use the really_simple_csv_importer_save_meta filter to hook into the import process,
`add_filter( 'really_simple_csv_importer_save_meta', 'rsc_import_images',10,3);
function rsc_import_images( $meta, $post, $is_update ) {
//convert to an array
$images = explode("|",$meta['cf47rs_images']);
$meta['cf47rs_images']=array();//reset the meta field
//directory to import images to
$artDir = 'wp-content/uploads/imported_cf47rs_images/';
//if the directory doesn't exist, create it
if(!file_exists(ABSPATH.$artDir)) {
mkdir(ABSPATH.$artDir);
}
require_once(ABSPATH . 'wp-load.php');
require_once(ABSPATH . 'wp-admin/includes/image.php');
global $wpdb;
//loop through each photos that need to be imported
foreach($images as $file_url){
//let's get the image file name
$new_filename = array_pop(explode("/", $file_url));
//move the file to our custom import folder
if (@fclose(@fopen($file_url, "r"))) { //make sure the file actually exists
$siteurl = get_option('siteurl');
$skip_attachment_insert=false;
//check if this image has already been imported,
if(file_exists(ABSPATH.$artDir.$new_filename) ){ //file already imported
//either change the name of the file UNCOMMENT the following line
//$new_filename = date("Y-m-d H:i:s").$new_filename;
//.... or overwrite it, COMMENT OUT the next 3 lines of code if you choose to uncomment the renaming of file name.
//in which case we want to find the attachment ID and store it in our meta field
$attach_id = attachment_url_to_postid($siteurl.'/'.$artDir.$new_filename);
$meta['cf47rs_images'][$attach_id] = $siteurl.'/'.$artDir.$new_filename;
//no need to insert a new attachment, we reuse the same
$skip_attachment_insert=true;
}
//(over)write the new file
copy($file_url, ABSPATH.$artDir.$new_filename);
if($skip_attachment_insert) continue;
$file_info = getimagesize(ABSPATH.$artDir.$new_filename);
//create an array of attachment data to insert into wp_posts table
$artdata = array(
'post_author' => 1,
'post_date' => current_time('mysql'),
'post_date_gmt' => current_time('mysql'),
'post_title' => $new_filename,
'post_status' => 'inherit',
'comment_status' => 'closed',
'ping_status' => 'closed',
'post_name' => sanitize_title_with_dashes(str_replace("_", "-", $new_filename)),
'post_modified' => current_time('mysql'),
'post_modified_gmt' => current_time('mysql'),
'post_type' => 'attachment',
'guid' => $siteurl.'/'.$artDir.$new_filename,
'post_mime_type' => $file_info['mime']
);
$uploads = wp_upload_dir();
$save_path = $uploads['basedir'].'/imported_cf47rs_images/'.$new_filename;
//insert the database record
$attach_id = wp_insert_attachment( $artdata, $save_path );
$meta['cf47rs_images'][$attach_id] = $siteurl.'/'.$artDir.$new_filename;
//generate metadata and thumbnails, comment this out if you don't want thumbnails
if ($attach_data = wp_generate_attachment_metadata( $attach_id, $save_path)) {
wp_update_attachment_metadata($attach_id, $attach_data);
}
}
}
return $meta;
}
`