Pagely Guide

Pagely Guide

How to Import WordPress Content with WP-CLI


WP-CLI is a powerful command-line tool designed to manage WordPress installations, offering both website owners and developers an efficient way to perform various tasks without logging into the WordPress dashboard. This guide will walk you through the process of importing WordPress content using WP-CLI, detailing the benefits, steps involved, potential complications, and how to resolve them.

WP-CLI

For Website Owners

Using WP-CLI to import WordPress content can significantly streamline the process, especially when dealing with large amounts of data. Some key benefits include:

  • Efficiency: Faster and more reliable than using the WordPress admin interface.
  • Automation: Easily script repetitive tasks.
  • Flexibility: Advanced options for managing authors, skipping certain data types, and more.

For Developers

WP-CLI allows for automation and integration into deployment workflows, ensuring consistent and repeatable processes across different environments.


Before you start, ensure you have the following:

  • Access to your server via SSH
  • WP-CLI installed on your server
  • A valid WordPress WXR (.xml) export file, which can be generated from your WordPress dashboard under Tools > Export

1. Connect to Your Server

First, connect to your server using SSH. Open your terminal and run:

ssh username@your-server.com

Replace username with your actual SSH username and your-server.com with your server’s address. If you are using a hosting control panel, you can find your SSH credentials and instructions in your account settings.

2. Navigate to Your WordPress Directory

Once connected, navigate to the directory where your WordPress installation is located. Typically, this directory is in the /var/www/html/ folder or a similar path. Use the cd command to change directories:

cd /path/to/your/wordpress

Replace /path/to/your/wordpress with the actual path to your WordPress directory. If you are unsure, you can use the ls command to list the contents of a directory and find the correct path.

3. Import the WXR File

To perform a simple import of your WXR file (which you should have exported from your WordPress dashboard under Tools > Export), use the following command:

wp import /path/to/your-file.xml --authors=create

Replace /path/to/your-file.xml with the path to your WXR file. The –authors=create option will create any authors that don’t already exist.


Handling Authors

Creating Non-Existent Authors

To create any authors that don’t already exist, use:

wp import /path/to/your-file.xml --authors=create

Skipping Non-Existent Authors

To leave the post’s author empty if the user doesn’t exist, use:

wp import /path/to/your-file.xml --authors=skip

Custom Mapping Authors

To associate your authors from the exported site with different users on the new site, provide a custom CSV file formatted with old_user_login and new_user_login:t

old_user_login,new_user_login user1,newuser1
anotheruser,somethingelse

Then, run:

wp import /path/to/your-file.xml --authors=/path/to/authors.csv

Skipping Content Types

To skip attachments during the import:

wp import /path/to/your-file.xml --skip=attachment

To skip thumbnail generation:

wp import /path/to/your-file.xml --skip=image_resize

Automation can significantly enhance the efficiency of your WordPress import process. Here are examples of shell scripts to automate various tasks:

Example 1: Basic Import Script

Create a script to automate the import process:

#!/bin/bash

# Define variables
WP_PATH="/path/to/your/wordpress" WXR_FILE="/path/to/your-file.xml" AUTHOR_OPTION="--authors=create"

# Navigate to WordPress directory cd $WP_PATH

# Run the import command
wp import $WXR_FILE $AUTHOR_OPTION

# Flush cache (if using a caching plugin) wp cache flush

echo "Import completed successfully."

Save this script as import.sh, make it executable, and run it:

bash
chmod +x import.sh
./import.sh

Example 2: Import with Author Mapping and Skipping Attachments

Create a more advanced script to handle author mapping and skipping attachments:

!/bin/bash

Define variables

WP_PATH="/path/to/your/wordpress"
WXR_FILE="/path/to/your-file.xml"
AUTHOR_MAP="/path/to/authors.csv"
SKIP_OPTIONS="--skip=attachment --skip=image_resize"

Navigate to WordPress directory

cd $WP_PATH

Run the import command with custom author mapping and skip options

wp import $WXR_FILE --authors=$AUTHOR_MAP $SKIP_OPTIONS

Flush cache

wp cache flush

Regenerate thumbnails (if using a thumbnail plugin)

wp media regenerate --yes
echo "Import with author mapping and skipping attachments completed
successfully."

Save this script as advanced_import.sh, make it executable, and run it:

bash
chmod +x advanced_import.sh
./advanced_import.sh

Example 3: Scheduling Imports with Cron Jobs

You can automate imports on a schedule using cron jobs. Edit your crontab with:

bash
crontab -e

Add a cron job to run your import script daily at midnight:

bash
0 0 * * * /path/to/your/import.sh

This will execute import.sh every day at midnight.


1.Missing Dependencies

Issue: WP-CLI may require certain PHP modules.
Solution: Ensure all required PHP modules are installed. Check the WP-CLI documentation for
specifics.


Installing PHP Modules


On Ubuntu:

bash
sudo apt-get install php-xml php-mbstring


On CentOS:

bash
sudo yum install php-xml php-mbstring

On Windows:

Download the required PHP extensions from the PHP website and enable them in your
php.ini file. For example, to enable php-xml, add or uncomment the following line:

ini
extension=php_xml.dll

On macOS:

Use Homebrew to install PHP and the necessary extensions:

bash
brew install php
brew install php@7.4 # if you need a specific version
brew link php

2. Memory Limits


Issue: Large imports might exceed PHP memory limits.
Solution: Increase memory limits in your php.ini file. Locate your php.ini file, which is usually found in /etc/php/7.4/cli/ or a similar path depending on your PHP version.


Open the file in a text editor:

bash
sudo nano /etc/php/7.4/cli/php.ini


Find the memory_limit line and increase the value:

ini
memory_limit = 256M


Save and close the file, then restart your web server:

bash
sudo systemctl restart nginx



On Windows:


Open your php.ini file located in your PHP installation directory (e.g., C:\php\php.ini) and
find the memory_limit line. Increase the value:

ini
memory_limit = 256M


Save the file and restart your web server.

3. Timeouts


Issue: Large imports might time out.
Solution: Increase the maximum execution time in your php.ini file.


Open your php.ini file:

bash
sudo nano /etc/php/7.4/cli/php.ini


Find the max_execution_time line and increase the value:

ini
max_execution_time = 300


Save and close the file, then restart your web server:

bash
sudo systemctl restart nginx


On Windows


Open your php.ini file located in your PHP installation directory (e.g., C:\php\php.ini) and find the max_execution_time line. Increase the value:

ini
max_execution_time = 300

Save the file and restart your web server.

4. Author Mapping Issues

Issue: Author mapping file is not correctly formatted.
Solution: Ensure your CSV file is properly formatted and accessible by WP-CLI.


Make sure your CSV file is structured correctly and placed in a directory accessible by your WP-CLI command. Use absolute paths to avoid any confusion.



Useful Plugins

For website owners who are not developers, there are several WordPress plugins that can help simplify the process of importing content:

All-in-One WP Migration


Features: Easily export and import your entire site, including the database,
media files, plugins, and themes.
How to Use: Install the plugin from the WordPress plugin repository, then use
the import/export features in the WordPress admin panel.

WP All Import


Features: Import any XML or CSV file to WordPress, with a simple
drag-and-drop interface.
How to Use: Install the plugin, then follow the on-screen instructions to map data from your XML or CSV file to WordPress fields.

WordPress Importer


Features: A straightforward tool to import posts, pages, comments, custom
fields, categories, and tags from a WordPress export file.
How to Use: Install the plugin, then navigate to Tools > Import in the WordPress admin panel and select the WordPress option.

Additional Suggestions

  1. Regular Backups: Always make a backup of your site before performing any import operations. This ensures you can restore your site in case anything goes wrong.
  2. Testing on a Staging Site: Perform imports on a staging site first to ensure everything works correctly before applying changes to your live site.
  3. Seek Professional Help: If you’re unsure about performing these tasks, consider hiring
    a professional or contacting Pagely support for assistance.

Using WP-CLI to import WordPress content can save you time and offer more control over the import process. By following this guide, Pagely customers can efficiently manage their WordPress imports and overcome common challenges. For non-developers, using recommended plugins can simplify the process while ensuring your site remains functional and
secure.

For more support, visit our Pagely Support page.ers rapid business growth and secure websites, check out Pagely’s solutions.