Import posts from CSV files into WordPress.
This WordPress plugin imports posts from CSV (Comma Separated Value) files into your
WordPress blog. It can prove extremely useful when you want to import a bunch
of posts from an Excel document or the like – simply export your document into
a CSV file and the plugin will take care of the rest.
https://wordpress.org/plugins/csv-importer-improved/
This plugin is forked from https://wordpress.org/plugins/csv-importer/ by dvkob
in order to keep up with changes to the core WordPress.
This importer writes directly to the database. It does not go through the internal
WordPress objects for creating posts etc. That may be an advantage to you (it will
be faster for large imports) but do be aware of any data integrity issues that may arrise.
Only UTF-8 encoding is supported, both with and without Byte Order Marks (BOM).
The development repository for this plugin can be found here:
https://github.com/academe/csv-importer-improved
Please feel free to raise issues there, and submit pull requests, as well as through
the normal WordPress channels.
Click on the CSV Importer link on your WordPress admin page, choose the
file you would like to import and click Import. The examples
directory
inside the plugin’s directory contains several files that demonstrate
how to use the plugin. The best way to get started is to import one of
these files and look at the results.
CSV is a tabular format that consists of rows and columns. Each row in
a CSV file represents a post; each column identifies a piece of information
that comprises a post.
You can create new posts, or update existing posts by supplying the csv_post_id
field pointing to an existing post. When updating, all field names you provide
in the CSV file will be updated – even if blank – but fields you don’t list at
the head of the CSV file will be left intact.
csv_post_id
– optional, used to update an existing post.csv_post_title
– title of the postcsv_post_post
– body of the postcsv_post_type
– post
, page
or a custom post type.csv_post_type
column supports custom post types.csv_post_excerpt
– post excerptcsv_post_categories
– a comma separated list of category names or ids.Animalia > Chordata > Mammalia
42
is ancsv_post_tags
– a “quoted” comma separated list of tags.csv_post_date
– most standard formats are supported.now
, 11/16/2009 0:00
, 1999-12-31 23:55:00
, +1 week
,last year
are all valid. For technicalstrtotime()
function documentation.Any column that doesn’t start with csv_
is considered to be a custom field
name. The data in that column will be imported as the custom fields value.
All custom fields must be unique. Multiple fields with the same name will be
updated to the same value if updating an existing post.
Prior to version 0.6.0 loading the same field name multiple times to an existing
post would create multiple custom fields.
csv_post_title
, csv_post_post
or>
csv_post_author
– numeric user id or login name. If not specified orcsv_post_slug
– post slug used in permalinks.csv_post_parent
– post parent id.New in version 0.3.0
Once custom taxonomies are set up in your theme’s functions.php file or
by using a 3rd party plugin, csv_ctax_(taxonomy name)
columns can be
used to assign imported data to the taxonomies.
Non-hierarchical taxonomies
The syntax for non-hierarchical taxonomies is straightforward and is essentially
the same as the csv_post_tags
syntax.
Hierarchical taxonomies
The syntax for hierarchical taxonomies is more complicated. Each hierarchical
taxonomy field is a tiny two-column CSV file, where the order of columns
matters. The first column contains the name of the parent term and the second
column contains the name of the child term. Top level terms have to be preceded
either by an empty string or a 0 (zero).
Sample examples/custom-taxonomies.csv
file included with the plugin
illustrates custom taxonomy support. To see how it works, make sure to set up
custom taxonomies from functions.inc.php
.
Make sure that the quotation marks used as text delimiters in csv_ctax_
columns are regular ASCII double quotes, not typographical quotes like “
(U+201C) and ” (U+201D).
New in version 0.3.1
An example file with comments is included in the examples
directory.
In short, comments can be imported along with posts by specifying columns
such as csv_comment_*_author
, csv_comment_*_content
etc, where * is
a comment ID number. This ID doesn’t go into WordPress. It is only there
to have the connection information in the CSV file.
This plugin uses php-csv-parser by Kazuyoshi Tlacaelel.
It was inspired by JayBlogger’s CSV Import plugin.
Contributors:
Installing the plugin:
wp-content/plugins
.I have quotation marks and commas as values in my CSV file. How do I tell CSV
Importer to use a different separator?
It doesn’t really matter what kind of separator you use if your file is
properly escaped. To see what I mean by proper escaping, take a look at
examples/sample.csv file which has cells with quotation marks and commas.
If the software you use for exporting to CSV is unable to escape quotation
marks and commas, you might want to give OpenOffice Calc a try.
How can I import characters with diacritics, Cyrillic or Han characters?
Make sure to save your CSV file with utf-8 encoding.
Prior to version 6.0.4, MySQL did not support some rare Han characters. As
a workaround, you can insert characters such as 𠊎 (U+2028E) by
converting them to HTML entities – 𠊎
I cannot import anything – the plugin displays “Imported 0 posts in 0.01
seconds.”
Update to version 0.3.1 or greater. Previous versions required write access to
the /tmp directory and the plugin failed if access was denied by PHP’s safe
mode or other settings.
I’m importing a file, but not all rows in it are imported and I don’t see
a confirmation message. Why?
WordPress can be many things, but one thing it’s not is blazing fast. The
reason why not all rows are imported and there’s no confirmation message is
that the plugin times out during execution – PHP decides that it has been
running too long and terminates it.
There are a number of solutions you can try. First, make sure that you’re not
using any plugins that may slow down post insertion. For example, a Twitter
plugin might attempt to tweet every post you import – not a very good idea
if you have 200 posts. Second, you can break up a file into smaller chunks that
take less time to import and therefore will not cause the plugin to time out.
Third, you can try adjusting PHP’s max_execution_time
option that sets how
long scripts are allowed to run. Description of how to do it is beyond the
scope of this FAQ – you should search the web and/or use your web host’s help
to find out how. However, putting the following line in .htaccess
file inside
public_html directory works for some people:
php_value max_execution_time 120
The problem can be approached from another angle, namely instead of giving
scripts more time to run making them run faster. There’s not much I can do to
speed up the plugin (you can contact me at dvkobozev at gmail.com if you like
to prove me wrong), so you can try to speed up WordPress. It is a pretty broad
topic, ranging from database optimizations to PHP accelerators such as APC,
eAccelerator or XCache, so I’m afraid you’re on your own here.
I receive the following error when I try to import my CSV file: “Invalid CSV
file: header length and/or row lengths do not match”. What’s wrong with your
plugin/my file?
Short answer: update to version 0.2.0 or later. Longer answer: the number of
fields (values) in rows in your file does not match the number of columns.
Version 0.2.0 pads such rows with empty values (if there are more columns than
cells in a row) or discards extra fields (if there are less columns than cells
in a row).
I’m getting the following error:
Parse error: syntax error, unexpected
. What gives?
T_STRING, expecting T_OLD_FUNCTION or T_FUNCTION or T_VAR or '}' in .../public_html/wp-content/plugins/csv-importer/File_CSV_DataSource/DataSource.php
on line 61
This plugin requires PHP5, while you probably have PHP4 or older. Update your
PHP installation or ask your hosting provider to do it for you.