Daily Picks CSV Export

Description

Daily Picks CSV Export writes your posts, pages and custom post types to CSV, built for one workflow: export, edit in Excel, import back.

Round-trip that closes cleanly

The “Round-trip” file uses exactly the column names that the free Really Simple CSV Importer reads. Nothing else goes into the file, because the importer stores any unknown column as a custom field. Exporters that add columns such as post_modified leave stray custom fields behind on every import.

  • Non-destructive. Columns that are not in the CSV, and empty cells, are never touched. Featured images, custom fields, post formats and sticky posts stay as they are. The other side of the same rule: you cannot erase a value by emptying its cell.
  • One post type per file. Types are never mixed, so a round-trip closes cleanly.
  • Backslashes survive the round-trip. WordPress removes one level of backslashes when the importer saves a post: C:\dir would become C:dir, /^\d+$/ would become /^d+$/, and block attributes such as \u0022 would break. The Round-trip file writes backslashes doubled, so they come back exactly as they were. Measured on a live post with 17 Windows paths in code blocks: after the round-trip, the content was byte-identical. Tested with Really Simple CSV Importer 1.3.1 on WordPress 7.1.2 (PHP 8.3); the CSV reading step was also measured on PHP 8.4 and with the setting PHP may make the default from 9.0.
  • Tags with a comma are left blank, and listed. The importer splits tags on commas, so one tag would become two. That cell is written blank, which the importer treats as “keep”, and you see the list before you download.
  • Content is optional. Excel cuts cells longer than 32,767 characters. Without the content column, content is left untouched.

Check before import

Upload the file you edited in Excel and see what the importer would do wrong, before anything is imported. Nothing is saved; the file is only read.

  • A backslash typed once. It would be removed. At the end of a cell or before a quote, the importer would also read the following columns into the wrong fields, overwriting the slug or publish date of that post. The check names the row and the cell.
  • Saved as plain “CSV” (Shift_JIS), which the importer stores garbled.
  • Columns that would become custom fields, IDs that would create new posts, a missing ID column (every row would become a new post), and post types that do not match.

Date check: repair publish dates after a round-trip

WordPress stores each publish date twice: in site time (shown on the page) and in GMT (used by RSS feeds and the REST API). When a post is updated with a new date but no new GMT date, WordPress keeps the old GMT date. So if you change publish dates in Excel and import, the page shows the new date while feeds and the API keep the old one.

Tools > Daily Picks CSV Export > Date check finds these posts and sets GMT from the site-time date.

  • Drafts without a fixed date are normal and are never reported.
  • It shows the site-wide state, and marks which posts started drifting after your last round-trip download.
  • Only the GMT date is changed: not the page date, the last-modified date or the content. Scheduled posts keep publishing on time.
  • The last fix can be undone in one click.

Measured on a live site with 467 posts: before any round-trip, the check reported 0 posts, so it does not flag correct dates. After one post’s date was changed in Excel and imported, it reported exactly that post, marked “new”; fixing it corrected the date in the RSS feed and the REST API, and nothing else changed.

Nothing runs automatically. The plugin does not hook into saving; every change is a button you press.

View file

A second mode for reading, not importing: readable headings, URL, category and author names, and a choice of UTF-8 with BOM, Shift_JIS or UTF-8. Cells that start with =, +, - or @ get a leading apostrophe so Excel does not run them as formulas. The file name ends in -view.

On sites with untrusted authors, use the View file before opening a CSV in Excel. The Round-trip file writes values exactly as stored, so that they come back unchanged.

Installation

  1. Install and activate the plugin.
  2. Go to Tools > Daily Picks CSV Export.
  3. To import a Round-trip file, install Really Simple CSV Importer and use Tools > Import > CSV.

FAQ

Which Excel format should I save as?

“CSV UTF-8 (Comma delimited)”. Plain “CSV” saves Shift_JIS in Japanese Excel, which the importer stores garbled.

Can I delete a tag or clear an excerpt through the CSV?

No. An empty cell means “keep”. This is what makes the round-trip non-destructive. Clear values in the post editor.

Why do backslashes appear doubled in Excel?

Because WordPress removes one level of backslashes when the importer saves. Doubled, they come back exactly. Keep them doubled when you edit, and type any new backslash twice. “Check before import” finds any you typed once.

Why is the tag cell empty for some posts?

One of the post’s tags has a comma in its name, and the importer would split it into two tags. The cell is blank, which means “keep”, so the post keeps its tags. The check screen lists these posts before you download.

Excel turned “1-2” into a date.

Excel converts some values when it opens a file. Check titles that look like numbers or dates before saving.

Does the plugin import?

No. Importing is done by Really Simple CSV Importer. This plugin does not change how it works.

Reviews

There are no reviews for this plugin.

Contributors & Developers

“Daily Picks CSV Export” is open source software. The following people have contributed to this plugin.

Contributors

Changelog

0.1.7

  • Admin styles are now loaded with wp_add_inline_style() on this plugin’s screen only.
  • Translation files are no longer bundled; translations come from translate.wordpress.org.

0.1.6

  • Check before import: a file without an ID column now gets a warning that every row will be created as a new post, instead of “no problems”. Importing is not blocked.

0.1.5

  • Renamed to Daily Picks CSV Export (slug daily-picks-csv-export). No functional changes.

0.1.4

  • All database queries fully prepared; upload checks hardened.
  • Check before import reads the upload in place (constant memory, no copy on disk) and looks up IDs in batches.
  • Clearer messages for files over the upload limit and for files that only need a decision.

0.1.2

  • New: Check before import — upload the edited file and see problems (single backslashes, column shifts, Shift_JIS, extra columns, unknown IDs) before importing.
  • View files are never doubled; only Round-trip files are.

0.1.1

  • Backslashes are written doubled so they survive the importer (instead of leaving those cells blank).

0.1.0

  • First version: Round-trip and View export (backslashes doubled so they survive the importer), pre-download check, Date check with undo.