WP Manifestindependent plugin directory
manifest / utilities / wpu_import_export

WPU Import Export

Simple import export

★ 0stars

Install

Download source zip No release zip yet

This is the repository archive. It installs, but the folder name will carry the branch suffix and updates will not flow.

Install straight from GitHub with WP-CLI:

wp plugin install https://github.com/wordpressutilities/wpu_import_export/archive/refs/heads/main.zip
No built-in updater. New versions won't appear under Dashboard → Updates. Install new releases yourself, or let Git Updater track the repository.

WPU Import Export is a wonderful plugin.

Hook

add_filter( 'wpu_import_export_post_types', function( $post_types ) {
    $post_types['post'] = [
        'post_type' => 'post',
        'unique_key' => 'uniqid', // Post meta holding the unique key, optional, defaults to 'uniqid'
        'unique_key_accepted_columns' => ['sku', 'ref'], // Alternative CSV header names accepted for the unique key on import, optional
        'load_post_data' => true, // Automatically load columns from post object, optional, defaults to false
        'columns' => []
    ];
    $post_types['event'] = [
        'post_type'  => 'event',
        'unique_key' => 'uniqid',
        // Import a line with an empty (or missing) unique key column instead of skipping it:
        'allow_create_without_key' => true,
        'columns'    => [
            'title'         => [
                'type' => 'post_title'
            ],
            'contact_email' => [
                'type'          => 'post_meta',
                'meta_key'      => 'contact_email', // optional, defaults to column name, used to target another
                'value_type'    => 'email', // optional, defaults to 'post_meta', used to validate import format
                'default_value' => '', // optional, defaults to ''
                'accepted_columns' => ['e-mail', 'mail'], // Alternative CSV header names accepted on import, optional
            ],
            'description'   => [
                'type'     => 'post_content',
                'markdown' => true, // Convert markdown to HTML on import when the cell holds no HTML, optional
            ],
            'categories'    => [
                'type'     => 'taxonomy',
                'taxonomy' => 'category', // Required. Cell holds comma-separated term names or slugs
                'create_terms' => false, // Optional. Create missing terms instead of ignoring them
            ],
            'speakers'      => [
                'type'       => 'repeater',
                'meta_key'   => 'speakers', // optional, defaults to column name
                'sub_fields' => ['name', 'role'], // Required. ACF-style repeater sub fields
                'format'     => 'newline', // Required. 'newline' (one value per line, first sub field only) or 'columns'
                'max'        => 5, // Required with format 'columns' only: number of generated columns
            ],
            'blocks'        => [
                'type'     => 'acf_flexible_block', // Import-only: fills an ACF flexible field, never exported
                'field'    => 'content-blocks', // optional, defaults to 'content-blocks'
                'layout'   => 'content', // optional, defaults to 'content'
                'subfield' => 'content', // optional, defaults to 'content'
            ],
        ],
    ];
    return $post_types;
} );