[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"$fwohdpQyXs0UmkNeKk1lUFuyis2Zb5VscL8fOmgFF780":3},{"slug":4,"name":5,"version":6,"author":7,"author_profile":8,"description":9,"short_description":10,"active_installs":11,"downloaded":12,"rating":13,"num_ratings":14,"last_updated":15,"tested_up_to":16,"requires_at_least":17,"requires_php":18,"tags":19,"homepage":25,"download_link":26,"security_score":27,"vuln_count":28,"unpatched_count":28,"last_vuln_date":29,"fetched_at":30,"vulnerabilities":31,"developer":32,"crawl_stats":29,"alternatives":40,"analysis":154,"fingerprints":255},"jekyll-exporter","Static Site Exporter","3.1.1","Ben Balter","https:\u002F\u002Fprofiles.wordpress.org\u002Fbenbalter\u002F","\u003Ch3>Features\u003C\u002Fh3>\n\u003Cul>\n\u003Cli>Converts all posts, pages, and settings from WordPress to Markdown and YAML for use in Jekyll (or Hugo or any other Markdown and YAML based site engine)\u003C\u002Fli>\n\u003Cli>Export what your users see, not what the database stores (runs post content through \u003Ccode>the_content\u003C\u002Fcode> filter prior to export, allowing third-party plugins to modify the output)\u003C\u002Fli>\n\u003Cli>Converts all \u003Ccode>post_content\u003C\u002Fcode> to Markdown\u003C\u002Fli>\n\u003Cli>Converts all \u003Ccode>post_meta\u003C\u002Fcode> and fields within the \u003Ccode>wp_posts\u003C\u002Fcode> table to YAML front matter for parsing by Jekyll\u003C\u002Fli>\n\u003Cli>Generates a \u003Ccode>_config.yml\u003C\u002Fcode> with all settings in the \u003Ccode>wp_options\u003C\u002Fcode> table\u003C\u002Fli>\n\u003Cli>Outputs a single zip file with \u003Ccode>_config.yml\u003C\u002Fcode>, pages, and \u003Ccode>_posts\u003C\u002Fcode> folder containing \u003Ccode>.md\u003C\u002Fcode> files for each post in the proper Jekyll naming convention\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Selective export\u003C\u002Fstrong>: Export only specific categories, tags, or post types using WP-CLI\u003C\u002Fli>\n\u003Cli>No settings. Just a single click.\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch3>Usage\u003C\u002Fh3>\n\u003Col>\n\u003Cli>Place plugin in \u003Ccode>\u002Fwp-content\u002Fplugins\u002F\u003C\u002Fcode> folder\u003C\u002Fli>\n\u003Cli>Activate plugin in WordPress dashboard\u003C\u002Fli>\n\u003Cli>Select \u003Ccode>Export to Jekyll\u003C\u002Fcode> from the \u003Ccode>Tools\u003C\u002Fcode> menu\u003C\u002Fli>\n\u003C\u002Fol>\n\u003Ch3>More information\u003C\u002Fh3>\n\u003Cp>See \u003Ca href=\"https:\u002F\u002Fben.balter.com\u002Fwordpress-to-jekyll-exporter\" rel=\"nofollow ugc\">the full documentation\u003C\u002Fa>:\u003C\u002Fp>\n\u003Cul>\n\u003Cli>\u003Ca href=\"https:\u002F\u002Fben.balter.com\u002Fwordpress-to-jekyll-exporter\u002F.\u002Fdocs\u002Fchangelog\u002F\" rel=\"nofollow ugc\">Changelog\u003C\u002Fa>\u003C\u002Fli>\n\u003Cli>\u003Ca href=\"https:\u002F\u002Fben.balter.com\u002Fwordpress-to-jekyll-exporter\u002F.\u002Fdocs\u002Fcommand-line-usage\u002F\" rel=\"nofollow ugc\">Command-line-usage\u003C\u002Fa>\u003C\u002Fli>\n\u003Cli>\u003Ca href=\"https:\u002F\u002Fben.balter.com\u002Fwordpress-to-jekyll-exporter\u002F.\u002Fdocs\u002Fselective-export\u002F\" rel=\"nofollow ugc\">Selective export by category or tag\u003C\u002Fa>\u003C\u002Fli>\n\u003Cli>\u003Ca href=\"https:\u002F\u002Fben.balter.com\u002Fwordpress-to-jekyll-exporter\u002F.\u002Fdocs\u002Fcustom-post-types\u002F\" rel=\"nofollow ugc\">Custom post types\u003C\u002Fa>\u003C\u002Fli>\n\u003Cli>\u003Ca href=\"https:\u002F\u002Fben.balter.com\u002Fwordpress-to-jekyll-exporter\u002F.\u002Fdocs\u002Fcustom-fields\u002F\" rel=\"nofollow ugc\">Custom fields\u003C\u002Fa>\u003C\u002Fli>\n\u003Cli>\u003Ca href=\"https:\u002F\u002Fben.balter.com\u002Fwordpress-to-jekyll-exporter\u002F.\u002Fdocs\u002Fdeveloping-locally\u002F\" rel=\"nofollow ugc\">Developing locally\u003C\u002Fa>\u003C\u002Fli>\n\u003Cli>\u003Ca href=\"https:\u002F\u002Fben.balter.com\u002Fwordpress-to-jekyll-exporter\u002F.\u002Fdocs\u002Frequired-php-version\u002F\" rel=\"nofollow ugc\">Minimum required PHP version\u003C\u002Fa>\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch3>Security Policy\u003C\u002Fh3>\n\u003Cp>To report a security vulnerability, please email \u003Ca href=\"mailto:ben@balter.com\" rel=\"nofollow ugc\">ben@balter.com\u003C\u002Fa>.\u003C\u002Fp>\n\u003Ch3>Where to get help or report an issue\u003C\u002Fh3>\n\u003Cul>\n\u003Cli>For getting started and general documentation, please browse, and feel free to contribute to \u003Ca href=\"http:\u002F\u002Fben.balter.com\u002Fwordpress-to-jekyll-exporter\u002F\" rel=\"nofollow ugc\">the project documentation\u003C\u002Fa>.\u003C\u002Fli>\n\u003Cli>For support questions (“How do I”, “I can’t seem to”, etc.) please search and if not already answered, open a thread in the \u003Ca href=\"https:\u002F\u002Fwordpress.org\u002Fsupport\u002Fplugin\u002Fjekyll-exporter\" rel=\"ugc\">Support Forums\u003C\u002Fa>.\u003C\u002Fli>\n\u003Cli>For technical issues (e.g., to submit a bug or feature request) please search and if not already filed, \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fbenbalter\u002F\u002Fwordpress-to-jekyll-exporter\u002Fissues\" rel=\"nofollow ugc\">open an issue on GitHub\u003C\u002Fa>.\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch3>Things to check before reporting an issue\u003C\u002Fh3>\n\u003Cul>\n\u003Cli>Are you using the latest version of WordPress?\u003C\u002Fli>\n\u003Cli>Are you using the latest version of the plugin?\u003C\u002Fli>\n\u003Cli>Does the problem occur even when you deactivate all plugins and use the default theme?\u003C\u002Fli>\n\u003Cli>Have you tried deactivating and reactivating the plugin?\u003C\u002Fli>\n\u003Cli>Has your issue \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fbenbalter\u002Fwordpress-to-jekyll-exporter\u002Fissues\" rel=\"nofollow ugc\">already been reported\u003C\u002Fa>?\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch3>What to include in an issue\u003C\u002Fh3>\n\u003Cul>\n\u003Cli>What steps can another user take to recreate the issue?\u003C\u002Fli>\n\u003Cli>What is the expected outcome of that action?\u003C\u002Fli>\n\u003Cli>What is the actual outcome of that action?\u003C\u002Fli>\n\u003Cli>Are there any screenshots or screencasts that may be helpful to include?\u003C\u002Fli>\n\u003Cli>Only include one bug per issue. If you have discovered two bugs, please file two issues.\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch3>Command-line Usage\u003C\u002Fh3>\n\u003Cp>If you’re having trouble with your web server timing out before the export is complete, or if you just like terminal better, you may enjoy the command-line tool.\u003C\u002Fp>\n\u003Cp>It works just like the plugin, but produces the zipfile on STDOUT:\u003C\u002Fp>\n\u003Cpre>\u003Ccode>`\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>php jekyll-export-cli.php > jekyll-export.zip\u003Cbr \u002F>\n    `\u003C\u002Fp>\n\u003Cp>If using this method, you must run first \u003Ccode>cd\u003C\u002Fcode> into the wordpress-to-jekyll-exporter directory.\u003C\u002Fp>\n\u003Cp>Alternatively, if you have \u003Ca href=\"http:\u002F\u002Fwp-cli.org\" rel=\"nofollow ugc\">WP-CLI\u003C\u002Fa> installed, you can run:\u003C\u002Fp>\n\u003Cpre>\u003Ccode>`\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>wp jekyll-export > export.zip\u003Cbr \u002F>\n    `\u003C\u002Fp>\n\u003Cp>The WP-CLI version will provide greater compatibility for alternate WordPress environments, such as when \u003Ccode>wp-content\u003C\u002Fcode> isn’t in the usual location.\u003C\u002Fp>\n\u003Ch3>Filtering by Category or Tag\u003C\u002Fh3>\n\u003Cp>You can export only specific categories or tags using the WP-CLI command. This is useful when you want to convert just one section of your WordPress site instead of the entire corpus.\u003C\u002Fp>\n\u003Ch4>Export posts from a specific category:\u003C\u002Fh4>\n\u003Cpre>\u003Ccode>`bash\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>wp jekyll-export –category=technology > export.zip\u003Cbr \u002F>\n    `\u003C\u002Fp>\n\u003Ch4>Export posts from multiple categories:\u003C\u002Fh4>\n\u003Cpre>\u003Ccode>`bash\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>wp jekyll-export –category=tech,news,updates > export.zip\u003Cbr \u002F>\n    `\u003C\u002Fp>\n\u003Ch4>Export posts with a specific tag:\u003C\u002Fh4>\n\u003Cpre>\u003Ccode>`bash\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>wp jekyll-export –tag=featured > export.zip\u003Cbr \u002F>\n    `\u003C\u002Fp>\n\u003Ch4>Export only pages (or specific post types):\u003C\u002Fh4>\n\u003Cpre>\u003Ccode>`bash\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>wp jekyll-export –post_type=page > export.zip\u003Cbr \u002F>\n    `\u003C\u002Fp>\n\u003Ch4>Combine filters:\u003C\u002Fh4>\n\u003Cpre>\u003Ccode>`bash\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>wp jekyll-export –category=technology –tag=featured –post_type=post > export.zip\u003Cbr \u002F>\n    \u003Ccode>\u003Ch3>Using Filters in PHP\u003C\u002Fh3>\u003Cbr \u002F>\nIf you're using the plugin via PHP code or want more control, you can use the\u003C\u002Fcode>jekyll_export_taxonomy_filters` filter:\u003C\u002Fp>\n\u003Cpre>\u003Ccode>`php\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>add_filter( ‘jekyll_export_taxonomy_filters’, function() {\u003Cbr \u002F>\n    return array(\u003Cbr \u002F>\n        ‘category’ => array( ‘technology’, ‘science’ ),\u003Cbr \u002F>\n        ‘post_tag’ => array( ‘featured’ ),\u003Cbr \u002F>\n    );\u003Cbr \u002F>\n} );\u003C\u002Fp>\n\u003Cp>\u002F\u002F Then trigger the export\u003Cbr \u002F>\nglobal $jekyll_export;\u003Cbr \u002F>\n$jekyll_export->export();\u003Cbr \u002F>\n    `\u003C\u002Fp>\n\u003Ch3>Custom fields\u003C\u002Fh3>\n\u003Cp>When using custom fields (e.g. with the Advanced Custom fields plugin) you might have to register a filter to convert array style configs to plain values.\u003C\u002Fp>\n\u003Ch4>Available Filters\u003C\u002Fh4>\n\u003Cp>The plugin provides two filters for customizing post metadata:\u003C\u002Fp>\n\u003Cul>\n\u003Cli>\u003Cstrong>\u003Ccode>jekyll_export_meta\u003C\u002Fcode>\u003C\u002Fstrong>: Filters the metadata for a single post before it’s merged with taxonomy terms. Receives \u003Ccode>$meta\u003C\u002Fcode> array as the only parameter.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>\u003Ccode>jekyll_export_post_meta\u003C\u002Fcode>\u003C\u002Fstrong>: Filters the complete metadata array (including taxonomy terms) just before it’s written to the YAML frontmatter. Receives \u003Ccode>$meta\u003C\u002Fcode> array and \u003Ccode>$post\u003C\u002Fcode> object as parameters. This is the recommended filter for most use cases.\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>\u003Cstrong>Note:\u003C\u002Fstrong> As of the latest version, the plugin no longer automatically removes empty or falsy values from the frontmatter. All metadata is preserved by default. If you want to remove certain fields, you can use the \u003Ccode>jekyll_export_post_meta\u003C\u002Fcode> filter to customize this behavior.\u003C\u002Fp>\n\u003Cp>By default, the plugin saves custom fields in an array structure that is exported as:\u003C\u002Fp>\n\u003Cpre>\u003Ccode>`php\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>[“my-bool”]=>\u003Cbr \u002F>\n    array(1) {\u003Cbr \u002F>\n        [0] => string(1) “1”\u003Cbr \u002F>\n    }\u003Cbr \u002F>\n[“location”]=>\u003Cbr \u002F>\n    array(1) {\u003Cbr \u002F>\n        [0] => string(88) “My address”\u003Cbr \u002F>\n    }\u003Cbr \u002F>\n    `\u003C\u002Fp>\n\u003Cp>And this leads to a YAML structure like:\u003C\u002Fp>\n\u003Cpre>\u003Ccode>`yaml\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>my-bool:\u003Cbr \u002F>\n– “1”\u003Cbr \u002F>\nlocation:\u003Cbr \u002F>\n– ‘My address’\u003Cbr \u002F>\n    `\u003C\u002Fp>\n\u003Cp>This is likely not the structure you expect or want to work with. You can convert it using a filter:\u003C\u002Fp>\n\u003Cpre>\u003Ccode>`php\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>add_filter( ‘jekyll_export_meta’, function($meta) {\u003Cbr \u002F>\n    foreach ($meta as $key => $value) {\u003Cbr \u002F>\n        if (is_array($value) && count($value) === 1 && array_key_exists(0, $value)) {\u003Cbr \u002F>\n            $meta[$key] = $value[0];\u003Cbr \u002F>\n        }\u003Cbr \u002F>\n    }\u003C\u002Fp>\n\u003Cpre>\u003Ccode>return $meta;\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>});\u003Cbr \u002F>\n    `\u003C\u002Fp>\n\u003Cp>A more complete solution could look like that:\u003C\u002Fp>\n\u003Cpre>\u003Ccode>`php\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>add_filter( ‘jekyll_export_meta’, function($meta) {\u003Cbr \u002F>\n    foreach ($meta as $key => $value) {\u003Cbr \u002F>\n        \u002F\u002F Advanced Custom Fields\u003Cbr \u002F>\n        if (is_array($value) && count($value) === 1 && array_key_exists(0, $value)) {\u003Cbr \u002F>\n            $value = maybe_unserialize($value[0]);\u003Cbr \u002F>\n            \u002F\u002F Advanced Custom Fields: NextGEN Gallery Field add-on\u003Cbr \u002F>\n            if (is_array($value) && count($value) === 1 && array_key_exists(0, $value)) {\u003Cbr \u002F>\n                $value = $value[0];\u003Cbr \u002F>\n            }\u003Cbr \u002F>\n        }\u003Cbr \u002F>\n        \u002F\u002F convert types\u003Cbr \u002F>\n        $value = match ($key) {\u003Cbr \u002F>\n            \u002F\u002F Advanced Custom Fields: “true_false” type\u003Cbr \u002F>\n            ‘my-bool’ => (bool) $value,\u003Cbr \u002F>\n            default => $value\u003Cbr \u002F>\n        };\u003Cbr \u002F>\n        $meta[$key] = $value;\u003Cbr \u002F>\n    }\u003C\u002Fp>\n\u003Cpre>\u003Ccode>return $meta;\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>});\u003Cbr \u002F>\n    `\u003C\u002Fp>\n\u003Ch4>Removing Empty or Falsy Values\u003C\u002Fh4>\n\u003Cp>If you want to remove empty or falsy values from the frontmatter (similar to the pre-3.0.3 behavior), you can use the \u003Ccode>jekyll_export_post_meta\u003C\u002Fcode> filter:\u003C\u002Fp>\n\u003Cpre>\u003Ccode>`php\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>add_filter( ‘jekyll_export_post_meta’, function( $meta, $post ) {\u003Cbr \u002F>\n    foreach ( $meta as $key => $value ) {\u003Cbr \u002F>\n        \u002F\u002F Remove falsy values except numeric 0\u003Cbr \u002F>\n        if ( ! is_numeric( $value ) && ! $value ) {\u003Cbr \u002F>\n            unset( $meta[ $key ] );\u003Cbr \u002F>\n        }\u003Cbr \u002F>\n    }\u003Cbr \u002F>\n    return $meta;\u003Cbr \u002F>\n}, 10, 2 );\u003Cbr \u002F>\n    `\u003C\u002Fp>\n\u003Ch3>Custom post types\u003C\u002Fh3>\n\u003Cp>To export custom post types, you’ll need to add a filter (w.g. to your themes config file) to do the following:\u003C\u002Fp>\n\u003Cpre>\u003Ccode>`php\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>add_filter( ‘jekyll_export_post_types’, function() {\u003Cbr \u002F>\n    return array(‘post’, ‘page’, ‘you-custom-post-type’);\u003Cbr \u002F>\n});\u003Cbr \u002F>\n    `\u003C\u002Fp>\n\u003Cp>The custom post type will be exported as a Jekyll collection. You’ll need to initialize it in the resulting Jekyll site’s \u003Ccode>_config.yml\u003C\u002Fcode>.\u003C\u002Fp>\n\u003Ch3>Developing locally\u003C\u002Fh3>\n\u003Ch4>Option 1: Using Dev Containers (Recommended)\u003C\u002Fh4>\n\u003Cp>The easiest way to get started is using \u003Ca href=\"https:\u002F\u002Fcode.visualstudio.com\u002Fdocs\u002Fdevcontainers\u002Fcontainers\" rel=\"nofollow ugc\">VS Code Dev Containers\u003C\u002Fa> or \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Ffeatures\u002Fcodespaces\" rel=\"nofollow ugc\">GitHub Codespaces\u003C\u002Fa>:\u003C\u002Fp>\n\u003Col>\n\u003Cli>Install \u003Ca href=\"https:\u002F\u002Fcode.visualstudio.com\u002F\" rel=\"nofollow ugc\">VS Code\u003C\u002Fa> and the \u003Ca href=\"https:\u002F\u002Fmarketplace.visualstudio.com\u002Fitems?itemName=ms-vscode-remote.remote-containers\" rel=\"nofollow ugc\">Dev Containers extension\u003C\u002Fa>\u003C\u002Fli>\n\u003Cli>\u003Ccode>git clone https:\u002F\u002Fgithub.com\u002Fbenbalter\u002Fwordpress-to-jekyll-exporter\u003C\u002Fcode>\u003C\u002Fli>\n\u003Cli>Open the folder in VS Code\u003C\u002Fli>\n\u003Cli>Click “Reopen in Container” when prompted\u003C\u002Fli>\n\u003Cli>Wait for the container to build and dependencies to install\u003C\u002Fli>\n\u003Cli>Access WordPress at \u003Ccode>http:\u002F\u002Flocalhost:8088\u003C\u002Fcode>\u003C\u002Fli>\n\u003C\u002Fol>\n\u003Cp>The devcontainer includes:\u003Cbr \u002F>\n– Pre-configured WordPress and MySQL\u003Cbr \u002F>\n– All PHP extensions and Composer dependencies\u003Cbr \u002F>\n– VS Code extensions for PHP development, debugging, and testing\u003Cbr \u002F>\n– WordPress coding standards configured\u003C\u002Fp>\n\u003Cp>See \u003Ca href=\"https:\u002F\u002Fben.balter.com\u002Fwordpress-to-jekyll-exporter\u002F.\u002F.devcontainer\u002FREADME\u002F\" rel=\"nofollow ugc\">.devcontainer\u002FREADME.md\u003C\u002Fa> for more details.\u003C\u002Fp>\n\u003Ch4>Option 2: Manual Setup\u003C\u002Fh4>\n\u003Ch4>Prerequisites\u003C\u002Fh4>\n\u003Col>\n\u003Cli>\u003Ccode>sudo apt-get update\u003C\u002Fcode>\u003C\u002Fli>\n\u003Cli>\u003Ccode>sudo apt-get install composer\u003C\u002Fcode>\u003C\u002Fli>\n\u003Cli>\u003Ccode>sudo apt-get install php7.3-xml\u003C\u002Fcode>\u003C\u002Fli>\n\u003Cli>\u003Ccode>sudo apt-get install php7.3-mysql\u003C\u002Fcode>\u003C\u002Fli>\n\u003Cli>\u003Ccode>sudo apt-get install php7.3-zip\u003C\u002Fcode>\u003C\u002Fli>\n\u003Cli>\u003Ccode>sudo apt-get install php-mbstring\u003C\u002Fcode>\u003C\u002Fli>\n\u003Cli>\u003Ccode>sudo apt-get install subversion\u003C\u002Fcode>\u003C\u002Fli>\n\u003Cli>\u003Ccode>sudo apt-get install mysql-server\u003C\u002Fcode>\u003C\u002Fli>\n\u003Cli>\u003Ccode>sudo apt-get install php-pear\u003C\u002Fcode>\u003C\u002Fli>\n\u003Cli>\u003Ccode>sudo pear install PHP_CodeSniffer\u003C\u002Fcode>\u003C\u002Fli>\n\u003C\u002Fol>\n\u003Ch4>Bootstrap & Setup\u003C\u002Fh4>\n\u003Col>\n\u003Cli>\u003Ccode>git clone https:\u002F\u002Fgithub.com\u002Fbenbalter\u002Fwordpress-to-jekyll-exporter\u003C\u002Fcode>\u003C\u002Fli>\n\u003Cli>\u003Ccode>cd wordpress-to-jekyll-exporter\u003C\u002Fcode>\u003C\u002Fli>\n\u003Cli>\u003Ccode>script\u002Fbootstrap\u003C\u002Fcode>\u003C\u002Fli>\n\u003Cli>\u003Ccode>script\u002Fsetup\u003C\u002Fcode>\u003C\u002Fli>\n\u003C\u002Fol>\n\u003Ch4>Option 3: Docker Compose Only\u003C\u002Fh4>\n\u003Col>\n\u003Cli>\u003Ccode>git clone https:\u002F\u002Fgithub.com\u002Fbenbalter\u002Fwordpress-to-jekyll-exporter\u003C\u002Fcode>\u003C\u002Fli>\n\u003Cli>\u003Ccode>docker-compose up\u003C\u002Fcode>\u003C\u002Fli>\n\u003Cli>\u003Ccode>open localhost:8088\u003C\u002Fcode>\u003C\u002Fli>\n\u003C\u002Fol>\n\u003Ch3>Running tests\u003C\u002Fh3>\n\u003Cpre>\u003Ccode>script\u002Fcibuild\u003Ch3>Performance Optimizations\u003C\u002Fh3>\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>This document describes the performance optimizations implemented in Static Site Exporter to improve export speed and reduce resource usage, especially for large WordPress sites.\u003C\u002Fp>\n\u003Ch3>Overview\u003C\u002Fh3>\n\u003Cp>The following optimizations have been implemented to address performance bottlenecks identified in the export process:\u003C\u002Fp>\n\u003Ch4>1. Optimized Database Queries\u003C\u002Fh4>\n\u003Cp>\u003Cstrong>Problem\u003C\u002Fstrong>: The original \u003Ccode>get_posts()\u003C\u002Fcode> method executed a separate SQL query for each post type, then merged the results using \u003Ccode>array_merge()\u003C\u002Fcode>.\u003C\u002Fp>\n\u003Cpre>\u003Ccode>`php\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>\u002F\u002F Before (inefficient)\u003Cbr \u002F>\nforeach ( $post_types as $post_type ) {\u003Cbr \u002F>\n    $ids   = $wpdb->get_col( $wpdb->prepare( “SELECT ID FROM {$wpdb->posts} WHERE post_type = %s”, $post_type ) );\u003Cbr \u002F>\n    $posts = array_merge( $posts, $ids );\u003Cbr \u002F>\n}\u003Cbr \u002F>\n    `\u003C\u002Fp>\n\u003Cp>\u003Cstrong>Solution\u003C\u002Fstrong>: Changed to a single SQL query using an IN clause.\u003C\u002Fp>\n\u003Cpre>\u003Ccode>`php\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>\u002F\u002F After (optimized)\u003Cbr \u002F>\n$placeholders = implode( ‘, ‘, array_fill( 0, count( $post_types ), ‘%s’ ) );\u003Cbr \u002F>\n$query        = “SELECT ID FROM {$wpdb->posts} WHERE post_type IN ($placeholders)”;\u003Cbr \u002F>\n$posts        = $wpdb->get_col( $wpdb->prepare( $query, $post_types ) );\u003Cbr \u002F>\n    `\u003C\u002Fp>\n\u003Cp>\u003Cstrong>Impact\u003C\u002Fstrong>: Reduces database round trips from N (number of post types, typically 3) to 1, significantly improving performance on sites with many posts.\u003C\u002Fp>\n\u003Ch4>2. User Data Caching\u003C\u002Fh4>\n\u003Cp>\u003Cstrong>Problem\u003C\u002Fstrong>: The \u003Ccode>convert_meta()\u003C\u002Fcode> method called \u003Ccode>get_userdata()\u003C\u002Fcode> for every post, resulting in redundant database queries for posts by the same author (N+1 query problem).\u003C\u002Fp>\n\u003Cpre>\u003Ccode>`php\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>\u002F\u002F Before (inefficient)\u003Cbr \u002F>\n‘author’  => get_userdata( $post->post_author )->display_name,\u003Cbr \u002F>\n    `\u003C\u002Fp>\n\u003Cp>\u003Cstrong>Solution\u003C\u002Fstrong>: Implemented a static cache to store user data across post conversions.\u003C\u002Fp>\n\u003Cpre>\u003Ccode>`php\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>\u002F\u002F After (optimized)\u003Cbr \u002F>\nstatic $user_cache = array();\u003Cbr \u002F>\nif ( ! isset( $user_cache[ $post->post_author ] ) ) {\u003Cbr \u002F>\n    $user_data                        = get_userdata( $post->post_author );\u003Cbr \u002F>\n    $user_cache[ $post->post_author ] = $user_data ? $user_data->display_name : ”;\u003Cbr \u002F>\n}\u003Cbr \u002F>\n‘author’ => $user_cache[ $post->post_author ],\u003Cbr \u002F>\n    `\u003C\u002Fp>\n\u003Cp>\u003Cstrong>Impact\u003C\u002Fstrong>: Eliminates redundant database queries for author information. On a site with 1000 posts by 10 authors, this reduces queries from 1000 to 10.\u003C\u002Fp>\n\u003Ch4>3. HTML to Markdown Converter Reuse\u003C\u002Fh4>\n\u003Cp>\u003Cstrong>Problem\u003C\u002Fstrong>: A new \u003Ccode>HtmlConverter\u003C\u002Fcode> instance was created for every post, wasting memory and CPU cycles on object initialization.\u003C\u002Fp>\n\u003Cpre>\u003Ccode>`php\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>\u002F\u002F Before (inefficient)\u003Cbr \u002F>\n$converter = new HtmlConverter( $converter_options );\u003Cbr \u002F>\n$converter->getEnvironment()->addConverter( new TableConverter() );\u003Cbr \u002F>\n    `\u003C\u002Fp>\n\u003Cp>\u003Cstrong>Solution\u003C\u002Fstrong>: Reuse a single static instance across all post conversions.\u003C\u002Fp>\n\u003Cpre>\u003Ccode>`php\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>\u002F\u002F After (optimized)\u003Cbr \u002F>\nstatic $converter = null;\u003Cbr \u002F>\nif ( null === $converter ) {\u003Cbr \u002F>\n    $converter_options = apply_filters( ‘jekyll_export_markdown_converter_options’, array( ‘header_style’ => ‘atx’ ) );\u003Cbr \u002F>\n    $converter         = new HtmlConverter( $converter_options );\u003Cbr \u002F>\n    $converter->getEnvironment()->addConverter( new TableConverter() );\u003Cbr \u002F>\n}\u003Cbr \u002F>\n    `\u003C\u002Fp>\n\u003Cp>\u003Cstrong>Impact\u003C\u002Fstrong>: Reduces object creation overhead. On a site with 1000 posts, this eliminates 999 unnecessary object instantiations.\u003C\u002Fp>\n\u003Ch4>4. Improved File Operations\u003C\u002Fh4>\n\u003Cp>\u003Cstrong>Problem\u003C\u002Fstrong>: The \u003Ccode>copy_recursive()\u003C\u002Fcode> method used the legacy \u003Ccode>dir()\u003C\u002Fcode> API which is slower than modern alternatives.\u003C\u002Fp>\n\u003Cpre>\u003Ccode>`php\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>\u002F\u002F Before (inefficient)\u003Cbr \u002F>\n$dir = dir( $source );\u003Cbr \u002F>\nwhile ( $entry = $dir->read() ) {\u003Cbr \u002F>\n    \u002F\u002F process files\u003Cbr \u002F>\n}\u003Cbr \u002F>\n$dir->close();\u003Cbr \u002F>\n    `\u003C\u002Fp>\n\u003Cp>\u003Cstrong>Solution\u003C\u002Fstrong>: Replaced with \u003Ccode>scandir()\u003C\u002Fcode> which is faster and more memory-efficient.\u003C\u002Fp>\n\u003Cpre>\u003Ccode>`php\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>\u002F\u002F After (optimized)\u003Cbr \u002F>\n$entries = @scandir( $source );\u003Cbr \u002F>\nif ( false === $entries ) {\u003Cbr \u002F>\n    return false;\u003Cbr \u002F>\n}\u003Cbr \u002F>\nforeach ( $entries as $entry ) {\u003Cbr \u002F>\n    \u002F\u002F process files\u003Cbr \u002F>\n}\u003Cbr \u002F>\n    `\u003C\u002Fp>\n\u003Cp>\u003Cstrong>Impact\u003C\u002Fstrong>: Improves directory traversal speed, particularly noticeable when copying large upload directories.\u003C\u002Fp>\n\u003Ch4>5. Upload Directory Filtering\u003C\u002Fh4>\n\u003Cp>\u003Cstrong>New Feature\u003C\u002Fstrong>: Added filters to allow skipping or excluding directories during the upload copy process.\u003C\u002Fp>\n\u003Cp>\u003Cstrong>Skip Entire Uploads\u003C\u002Fstrong>:\u003Cbr \u002F>\n    \u003Ccode>php\u003Cbr \u002F>\nadd_filter( 'jekyll_export_skip_uploads', '__return_true' );\u003C\u002Fcode>\u003C\u002Fp>\n\u003Cp>\u003Cstrong>Exclude Specific Directories\u003C\u002Fstrong> (e.g., cache or temporary files):\u003Cbr \u002F>\n    \u003Ccode>php\u003Cbr \u002F>\nadd_filter( 'jekyll_export_excluded_upload_dirs', function( $excluded ) {\u003Cbr \u002F>\n    return array_merge( $excluded, array( '\u002Fcache\u002F', '\u002Ftmp\u002F', '\u002Fbackup\u002F' ) );\u003Cbr \u002F>\n} );\u003C\u002Fcode>\u003C\u002Fp>\n\u003Cp>\u003Cstrong>Impact\u003C\u002Fstrong>: Allows large sites to:\u003Cbr \u002F>\n– Skip uploads entirely if they’re served from a CDN\u003Cbr \u002F>\n– Exclude cache directories that aren’t needed in the export\u003Cbr \u002F>\n– Reduce export time and file size for very large installations\u003C\u002Fp>\n\u003Ch3>Performance Benchmarks\u003C\u002Fh3>\n\u003Ch4>Estimated Improvements\u003C\u002Fh4>\n\u003Cp>Based on the optimizations, expected performance improvements for a typical WordPress site:\u003C\u002Fp>\n\u003Cp>  Site Size\u003Cbr \u002F>\n  Before\u003Cbr \u002F>\n  After\u003Cbr \u002F>\n  Improvement\u003C\u002Fp>\n\u003Cp>  Small (100 posts, 5 authors)\u003Cbr \u002F>\n  ~5s\u003Cbr \u002F>\n  ~3s\u003Cbr \u002F>\n  40% faster\u003C\u002Fp>\n\u003Cp>  Medium (1000 posts, 20 authors)\u003Cbr \u002F>\n  ~45s\u003Cbr \u002F>\n  ~20s\u003Cbr \u002F>\n  55% faster\u003C\u002Fp>\n\u003Cp>  Large (10000 posts, 50 authors)\u003Cbr \u002F>\n  ~8min\u003Cbr \u002F>\n  ~3min\u003Cbr \u002F>\n  63% faster\u003C\u002Fp>\n\u003Cp>\u003Cem>Note: Actual performance depends on server hardware, database configuration, and content complexity.\u003C\u002Fem>\u003C\u002Fp>\n\u003Ch4>Database Query Reduction\u003C\u002Fh4>\n\u003Cp>  Operation\u003Cbr \u002F>\n  Queries Before\u003Cbr \u002F>\n  Queries After\u003Cbr \u002F>\n  Reduction\u003C\u002Fp>\n\u003Cp>  Get posts (3 post types)\u003Cbr \u002F>\n  3\u003Cbr \u002F>\n  1\u003Cbr \u002F>\n  67%\u003C\u002Fp>\n\u003Cp>  User data (100 posts, 5 authors)\u003Cbr \u002F>\n  100\u003Cbr \u002F>\n  5\u003Cbr \u002F>\n  95%\u003C\u002Fp>\n\u003Cp>  \u003Cstrong>Total for 100 posts\u003C\u002Fstrong>\u003Cbr \u002F>\n  \u003Cstrong>103\u003C\u002Fstrong>\u003Cbr \u002F>\n  \u003Cstrong>6\u003C\u002Fstrong>\u003Cbr \u002F>\n  \u003Cstrong>94%\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Ch3>Backward Compatibility\u003C\u002Fh3>\n\u003Cp>All optimizations maintain backward compatibility:\u003Cbr \u002F>\n– All existing WordPress hooks and filters continue to work\u003Cbr \u002F>\n– No changes to the exported file format\u003Cbr \u002F>\n– No changes to the public API\u003Cbr \u002F>\n– New filters are opt-in and don’t affect default behavior\u003C\u002Fp>\n\u003Ch3>Additional Optimization Tips\u003C\u002Fh3>\n\u003Cp>For even better performance on large sites:\u003C\u002Fp>\n\u003Col>\n\u003Cli>\n\u003Cp>\u003Cstrong>Increase PHP memory limit\u003C\u002Fstrong>: Add to \u003Ccode>wp-config.php\u003C\u002Fcode>:\u003Cbr \u002F>\n   \u003Ccode>php\u003Cbr \u002F>\ndefine( 'WP_MEMORY_LIMIT', '512M' );\u003C\u002Fcode>\u003C\u002Fp>\n\u003C\u002Fli>\n\u003Cli>\n\u003Cp>\u003Cstrong>Use WP-CLI\u003C\u002Fstrong>: The command-line interface bypasses web server timeouts:\u003Cbr \u002F>\n   \u003Ccode>bash\u003Cbr \u002F>\nwp jekyll-export > export.zip\u003C\u002Fcode>\u003C\u002Fp>\n\u003C\u002Fli>\n\u003Cli>\n\u003Cp>\u003Cstrong>Skip uploads if using CDN\u003C\u002Fstrong>: If your uploads are served from a CDN, you can skip copying them:\u003Cbr \u002F>\n   \u003Ccode>php\u003Cbr \u002F>\nadd_filter( 'jekyll_export_skip_uploads', '__return_true' );\u003C\u002Fcode>\u003C\u002Fp>\n\u003C\u002Fli>\n\u003Cli>\n\u003Cp>\u003Cstrong>Enable object caching\u003C\u002Fstrong>: Use Redis or Memcached to speed up WordPress core queries.\u003C\u002Fp>\n\u003C\u002Fli>\n\u003C\u002Fol>\n\u003Ch3>Technical Notes\u003C\u002Fh3>\n\u003Ch4>Why Static Variables?\u003C\u002Fh4>\n\u003Cp>Static variables in PHP persist across function calls within the same request. This makes them ideal for caching data during a batch export process where the same function is called many times (once per post).\u003C\u002Fp>\n\u003Ch4>Thread Safety\u003C\u002Fh4>\n\u003Cp>These optimizations are safe for:\u003Cbr \u002F>\n– Single-threaded PHP execution (standard)\u003Cbr \u002F>\n– WordPress multisite installations\u003Cbr \u002F>\n– WP-CLI execution\u003C\u002Fp>\n\u003Cp>They are NOT designed for:\u003Cbr \u002F>\n– Multi-threaded or async PHP environments (not common in WordPress)\u003Cbr \u002F>\n– Long-running daemon processes (not the intended use case)\u003C\u002Fp>\n\u003Ch3>Future Optimization Opportunities\u003C\u002Fh3>\n\u003Cp>Potential areas for future improvement:\u003C\u002Fp>\n\u003Col>\n\u003Cli>\u003Cstrong>Bulk metadata loading\u003C\u002Fstrong>: Pre-load all post meta in a single query\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Taxonomy term caching\u003C\u002Fstrong>: Pre-load all terms to avoid per-post queries\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Streaming ZIP creation\u003C\u002Fstrong>: Write directly to ZIP instead of creating temp directory\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Parallel processing\u003C\u002Fstrong>: Use multiple processes for very large exports (WP-CLI only)\u003C\u002Fli>\n\u003C\u002Fol>\n\u003Ch3>Questions?\u003C\u002Fh3>\n\u003Cp>For questions about these optimizations or to report performance issues:\u003Cbr \u002F>\n– \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fbenbalter\u002Fwordpress-to-jekyll-exporter\u002Fissues\" rel=\"nofollow ugc\">Open an issue\u003C\u002Fa>\u003Cbr \u002F>\n– \u003Ca href=\"https:\u002F\u002Fben.balter.com\u002Fwordpress-to-jekyll-exporter\u002F\" rel=\"nofollow ugc\">View the documentation\u003C\u002Fa>\u003C\u002Fp>\n\u003Ch3>Performance Tips for Large Sites\u003C\u002Fh3>\n\u003Cp>If you’re running a large WordPress site with thousands of posts or gigabytes of uploads, here are some tips to make the export process faster and more efficient.\u003C\u002Fp>\n\u003Ch3>Quick Wins\u003C\u002Fh3>\n\u003Ch4>1. Use WP-CLI Instead of Browser Export\u003C\u002Fh4>\n\u003Cp>Browser-based exports are subject to PHP execution time limits (typically 30-300 seconds). Use WP-CLI for unlimited execution time:\u003C\u002Fp>\n\u003Cpre>\u003Ccode>`bash\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>wp jekyll-export > export.zip\u003Cbr \u002F>\n    `\u003C\u002Fp>\n\u003Ch4>2. Skip Uploads if You Don’t Need Them\u003C\u002Fh4>\n\u003Cp>If your images and files are served from a CDN or you plan to handle them separately, you can skip the uploads directory entirely:\u003C\u002Fp>\n\u003Cpre>\u003Ccode>`php\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>\u002F\u002F Add to your theme’s functions.php or a custom plugin\u003Cbr \u002F>\nadd_filter( ‘jekyll_export_skip_uploads’, ‘__return_true’ );\u003Cbr \u002F>\n    `\u003C\u002Fp>\n\u003Cp>This can save significant time and disk space, especially if you have gigabytes of media files.\u003C\u002Fp>\n\u003Ch4>3. Exclude Cache and Temporary Directories\u003C\u002Fh4>\n\u003Cp>Many sites accumulate cache files and temporary uploads that aren’t needed in the export:\u003C\u002Fp>\n\u003Cpre>\u003Ccode>`php\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>add_filter( ‘jekyll_export_excluded_upload_dirs’, function( $excluded ) {\u003Cbr \u002F>\n    return array_merge( $excluded, array(\u003Cbr \u002F>\n        ‘\u002Fcache\u002F’,\u003Cbr \u002F>\n        ‘\u002Ftmp\u002F’,\u003Cbr \u002F>\n        ‘\u002Fbackup\u002F’,\u003Cbr \u002F>\n        ‘\u002Fwc-logs\u002F’,  \u002F\u002F WooCommerce logs\u003Cbr \u002F>\n        ‘\u002Fwpml\u002F’,     \u002F\u002F WPML cache\u003Cbr \u002F>\n    ) );\u003Cbr \u002F>\n} );\u003Cbr \u002F>\n    `\u003C\u002Fp>\n\u003Ch3>Performance Improvements in Version 2.4.3+\u003C\u002Fh3>\n\u003Cp>Recent optimizations  &hellip;\u003C\u002Fp>\n","Features",500,41801,70,12,"2026-02-09T20:04:00.000Z","6.9.4","4.4","7.2",[20,21,22,23,24],"export","github","github-pages","jekyll","yaml","https:\u002F\u002Fgithub.com\u002Fbenbalter\u002Fwordpress-to-jekyll-exporter\u002F","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fjekyll-exporter.3.1.1.zip",100,0,null,"2026-03-15T15:16:48.613Z",[],{"slug":33,"display_name":7,"profile_url":8,"plugin_count":34,"total_installs":35,"avg_security_score":36,"avg_patch_time_days":37,"trust_score":38,"computed_at":39},"benbalter",7,2790,89,13,86,"2026-04-04T09:10:34.249Z",[41,65,88,110,133],{"slug":42,"name":43,"version":44,"author":45,"author_profile":46,"description":47,"short_description":48,"active_installs":49,"downloaded":50,"rating":51,"num_ratings":52,"last_updated":53,"tested_up_to":16,"requires_at_least":54,"requires_php":55,"tags":56,"homepage":62,"download_link":63,"security_score":51,"vuln_count":37,"unpatched_count":28,"last_vuln_date":64,"fetched_at":30},"all-in-one-wp-migration","All-in-One WP Migration and Backup","7.102","ServMask","https:\u002F\u002Fprofiles.wordpress.org\u002Fservmask\u002F","\u003Cp>\u003Cstrong>The Most Trusted WordPress Migration & Backup Plugin Since 2013\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cp>All-in-One WP Migration is the gold standard for WordPress site migration and backup, used by over 60 million websites worldwide – from small blogs to Fortune 500 companies and government agencies. Whether you need to migrate WordPress to a new host, create a full site backup, or restore a previous backup, our plugin offers enterprise-grade reliability with beginner-friendly simplicity.\u003C\u002Fp>\n\u003Cp>\u003Cstrong>Why Choose All-in-One WP Migration?\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cul>\n\u003Cli>\u003Cstrong>Effortless Migration\u003C\u002Fstrong>: Migrate your entire site with a single click – including database, media, themes, and plugins\u003C\u002Fli>\n\u003Cli>\u003Cstrong>One-Click Backup\u003C\u002Fstrong>: Create a complete WordPress backup before you migrate, so you can restore anytime\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Zero Downtime\u003C\u002Fstrong>: Complete your migration with no service interruptions\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Universal Compatibility\u003C\u002Fstrong>: Migrate between any hosting providers – from budget shared hosting to high-end dedicated servers\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Technical Excellence\u003C\u002Fstrong>: Engineered for reliability with memory-efficient processing (512KB chunks), ideal for resource-limited environments\u003C\u002Fli>\n\u003Cli>\u003Cstrong>No Technical Skills Required\u003C\u002Fstrong>: Intuitive interface lets anyone migrate or backup a WordPress site without technical expertise\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Cross-Database Support\u003C\u002Fstrong>: Migrate seamlessly between MySQL, MariaDB, and SQLite databases\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Secure & Reliable\u003C\u002Fstrong>: Trusted by Boeing, NASA, Harvard, Stanford, Automattic, and government agencies worldwide\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>\u003Cstrong>How to Migrate WordPress – Simple as 1-2-3:\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Col>\n\u003Cli>\u003Cstrong>Install\u003C\u002Fstrong> the migration plugin on your source and destination sites\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Backup & Export\u003C\u002Fstrong> your site to a .wpress backup file with one click\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Import & Migrate\u003C\u002Fstrong> using our drag-and-drop importer on your destination site\u003C\u002Fli>\n\u003C\u002Fol>\n\u003Cp>\u003Cstrong>For Developers & Power Users:\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cul>\n\u003Cli>\u003Cstrong>Advanced Find & Replace\u003C\u002Fstrong>: Control exactly what changes when you migrate\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Selective Migration & Backup\u003C\u002Fstrong>: Include or exclude specific content types from your migration or backup\u003C\u002Fli>\n\u003Cli>\u003Cstrong>PHP 5.3-8.4 Compatibility\u003C\u002Fstrong>: Works across virtually all hosting environments\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Custom WPress Format\u003C\u002Fstrong>: Our optimized archive format ensures data integrity\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Hook System\u003C\u002Fstrong>: Extensive API for custom integration and workflows\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Command-Line Support\u003C\u002Fstrong>: Automate migrations and backups via WP-CLI\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>\u003Cstrong>Premium Extensions:\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cp>Enhance your migration and backup workflow with our \u003Ca href=\"https:\u002F\u002Fservmask.com\u002Fproducts\" rel=\"nofollow ugc\">premium extensions\u003C\u002Fa>:\u003C\u002Fp>\n\u003Cul>\n\u003Cli>\u003Cstrong>Unlimited Migration Size\u003C\u002Fstrong>: Migrate sites of any size with no file limits\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Cloud Backup & Migration\u003C\u002Fstrong>: Backup and migrate directly to\u002Ffrom Dropbox, Google Drive, OneDrive, and more\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Multisite Migration\u003C\u002Fstrong>: Migrate complex WordPress multisite networks\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Scheduled Backups\u003C\u002Fstrong>: Automated, recurring WordPress backups on your schedule\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Database Filtering\u003C\u002Fstrong>: Exclude specific tables or data from your migration or backup\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>\u003Cstrong>Features Spotlight:\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cul>\n\u003Cli>WCAG 2.1 AA Level accessibility compliance\u003C\u002Fli>\n\u003Cli>Mobile-responsive interface\u003C\u002Fli>\n\u003Cli>\u003Ca href=\"https:\u002F\u002Ftraktor.servmask.com\" rel=\"nofollow ugc\">Browse WPRESS files online\u003C\u002Fa> or \u003Ca href=\"https:\u002F\u002Ftraktor.wp-migration.com\" rel=\"nofollow ugc\">extract locally\u003C\u002Fa>\u003C\u002Fli>\n\u003Cli>Automatic URL and path replacement during migration\u003C\u002Fli>\n\u003Cli>WordPress Playground integration – migrate between SQLite and MySQL\u003C\u002Fli>\n\u003Cli>Regular bi-weekly updates ensuring your backup and migration plugin stays compatible\u003C\u002Fli>\n\u003Cli>Available in 50+ languages including Japanese\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>\u003Cstrong>Trusted by the Government and Big Corporations:\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cp>Many enterprise customers, government organizations, and universities use, love, and trust All-in-One WP Migration. Here are some: Boeing, NASA, VW, IBM, Harvard University, Stanford University, Lego, P&G, Automattic, State of California, State of Hawaii.\u003Cbr \u002F>\nThis broad adoption demonstrates how \u003Cstrong>safe, reliable and adaptable\u003C\u002Fstrong> this WordPress migration and backup plugin is for any website migration need.\u003C\u002Fp>\n\u003Cp>\u003Cstrong>Update Frequency:\u003C\u002Fstrong>\u003Cbr \u002F>\nOur team is dedicated to keeping this WordPress migration and backup plugin up-to-date and secure. We release updates every two weeks or at least once a month, ensuring your migration and backup workflows remain compatible with the latest WordPress versions, including beta releases. Our proactive testing and feedback to the WordPress core team help in preemptively addressing any potential issues, so you can always migrate and backup with confidence.\u003C\u002Fp>\n\u003Cp>\u003Cstrong>Full Compatibility and Support:\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cp>All-in-One WP Migration has been extensively tested and confirmed to be compatible with most WordPress plugins and themes, so you can migrate and backup without worrying about conflicts.\u003Cbr \u002F>\nThis means you don’t experience cross-plugin compatibility issues that can slow down or break your WordPress site when you migrate.\u003Cbr \u002F>\nAll-in-One WP Migration has partnered with multiple theme and plugin vendors to distribute their products with us as a single, easy-to-install migration and backup package.\u003Cbr \u002F>\nThese vendors trust our migration plugin to provide their customers with reliable product delivery, support, migrations, and backups.\u003C\u002Fp>\n\u003Cp>\u003Cstrong>Cloud Storage Supported:\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cp>All-in-One WP Migration supports backup and migration to all major cloud storage services.\u003Cbr \u002F>\nThe plugin comes preinstalled on all Bitnami WordPress sites running on AWS, Google Compute Cloud, and Microsoft Azure – ready to migrate and backup out of the box.\u003C\u002Fp>\n\u003Cp>\u003Cstrong>Case Studies:\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cul>\n\u003Cli>Small Business Migration: A small online retailer used All-in-One WP Migration to migrate to a more robust hosting solution, creating a full backup before the migration and completing the move without downtime during peak shopping season.\u003C\u002Fli>\n\u003Cli>Educational Migration: A prominent university utilized All-in-One WP Migration to migrate and consolidate multiple departmental sites into a single WordPress network, with automated backups ensuring no data was lost during migration.\u003C\u002Fli>\n\u003Cli>Government Migration: Following a directive to improve digital accessibility, a government agency used our migration plugin to migrate their content to a new, compliant platform without impacting public access to critical information.\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch4>Contact us\u003C\u002Fh4>\n\u003Cul>\n\u003Cli>\u003Ca href=\"https:\u002F\u002Fpatchstack.com\u002Fdatabase\u002Fvdp\u002Fall-in-one-wp-migration\" rel=\"nofollow ugc\">Report a security vulnerability\u003C\u002Fa>\u003C\u002Fli>\n\u003Cli>\u003Ca href=\"https:\u002F\u002Fservmask.com\u002Fhelp\" rel=\"nofollow ugc\">Get free help from us here\u003C\u002Fa>\u003C\u002Fli>\n\u003Cli>\u003Ca href=\"https:\u002F\u002Fservmask.com\u002Fhelp\" rel=\"nofollow ugc\">Report a bug or request a feature\u003C\u002Fa>\u003C\u002Fli>\n\u003Cli>\u003Ca href=\"https:\u002F\u002Fservmask.com\" rel=\"nofollow ugc\">Find out more about us\u003C\u002Fa>\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cspan class=\"embed-youtube\" style=\"text-align:center; display: block;\">\u003Ciframe loading=\"lazy\" class=\"youtube-player\" width=\"750\" height=\"422\" src=\"https:\u002F\u002Fwww.youtube.com\u002Fembed\u002FBpWxCeUWBOk?version=3&rel=1&showsearch=0&showinfo=1&iv_load_policy=1&fs=1&hl=en-US&autohide=2&wmode=transparent\" allowfullscreen=\"true\" style=\"border:0;\" sandbox=\"allow-scripts allow-same-origin allow-popups allow-presentation allow-popups-to-escape-sandbox\">\u003C\u002Fiframe>\u003C\u002Fspan>\n\u003Cspan class=\"embed-youtube\" style=\"text-align:center; display: block;\">\u003Ciframe loading=\"lazy\" class=\"youtube-player\" width=\"750\" height=\"422\" src=\"https:\u002F\u002Fwww.youtube.com\u002Fembed\u002FmRp7qTFYKgs?version=3&rel=1&showsearch=0&showinfo=1&iv_load_policy=1&fs=1&hl=en-US&autohide=2&wmode=transparent\" allowfullscreen=\"true\" style=\"border:0;\" sandbox=\"allow-scripts allow-same-origin allow-popups allow-presentation allow-popups-to-escape-sandbox\">\u003C\u002Fiframe>\u003C\u002Fspan>\n\u003Ch3>Privacy Policy\u003C\u002Fh3>\n\u003Cp>All-in-One WP Migration is designed to fully respect and protect the personal information of its users. It asks for your consent to collect the user’s email address when filling the plugin’s contact form.\u003Cbr \u002F>\nAll-in-One WP Migration is in full compliance with General Data Protection Regulation (GDPR).\u003Cbr \u002F>\nSee our \u003Ca href=\"https:\u002F\u002Fwww.iubenda.com\u002Fprivacy-policy\u002F946881\" rel=\"nofollow ugc\">GDPR Compliant Privacy Policy here\u003C\u002Fa>.\u003C\u002Fp>\n","Trusted by 60M+ sites: The gold standard for WordPress migration and backup. Migrate, backup, and restore your WordPress site with one click.",5000000,172689108,90,7624,"2026-02-28T01:37:00.000Z","3.3","5.3",[57,58,59,60,61],"backup","clone","export-import","migrate","move-wordpress","https:\u002F\u002Fservmask.com\u002F","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fall-in-one-wp-migration.7.102.zip","2025-08-26 10:28:31",{"slug":66,"name":67,"version":68,"author":69,"author_profile":70,"description":71,"short_description":72,"active_installs":73,"downloaded":74,"rating":75,"num_ratings":76,"last_updated":77,"tested_up_to":16,"requires_at_least":78,"requires_php":79,"tags":80,"homepage":86,"download_link":87,"security_score":27,"vuln_count":28,"unpatched_count":28,"last_vuln_date":29,"fetched_at":30},"widget-importer-exporter","Widget Importer & Exporter","1.6.1","Steven Gliebe","https:\u002F\u002Fprofiles.wordpress.org\u002Fstevengliebe\u002F","\u003Cp>Widget Importer & Exporter is useful for moving widgets from one WordPress site to another, backing up widgets and for theme developers to give users sample widgets. See the \u003Ca href=\"https:\u002F\u002Fchurchthemes.com\u002Fplugins\u002Fwidget-importer-exporter\u002F\" rel=\"nofollow ugc\">details\u003C\u002Fa> on ChurchThemes.com.\u003C\u002Fp>\n\u003Ch4>Importing\u003C\u002Fh4>\n\u003Cp>Importing is done by uploading an export file created by the plugin. The results of an import are shown in a nicely formatted table with an explanation of what happened with each widget area and widget.\u003C\u002Fp>\n\u003Cp>Importation takes into consideration widget areas not existing in the current theme (widgets imported as \u003Cem>Inactive\u003C\u002Fem>), widgets that already exist in the same widget area (widgets not duplicated) and widgets that are not supported by the site (widgets not imported).\u003C\u002Fp>\n\u003Ch4>Exporting\u003C\u002Fh4>\n\u003Cp>Widget Importer & Exporter can create an export file (in JSON format with .wie extension) out of currently active widgets. This file can be imported into other sites using this plugin or used to restore widgets to the same site later.\u003C\u002Fp>\n\u003Ch4>Developers\u003C\u002Fh4>\n\u003Cp>The \u003Ccode>wie_before_import\u003C\u002Fcode> action fires after a file is uploaded but before the data is imported. \u003Ccode>wie_after_import\u003C\u002Fcode> fires after the data is imported. The \u003Ccode>wie_import_data\u003C\u002Fcode> filter can be used to filter data before it is imported. Other filters are used throughout. Make a pull request on GitHub if you need another hook.\u003C\u002Fp>\n\u003Cp>Please jump on \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fchurchthemes\u002Fwidget-importer-exporter\" rel=\"nofollow ugc\">GitHub\u003C\u002Fa> to report issues and follow development.\u003C\u002Fp>\n","Import and export your widgets.",200000,5278666,94,117,"2025-12-01T16:14:00.000Z","3.5","5.2.4",[81,82,83,84,85],"exporter","import","importer","widget","widgets","https:\u002F\u002Fchurchthemes.com\u002Fplugins\u002Fwidget-importer-exporter\u002F","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fwidget-importer-exporter.1.6.1.zip",{"slug":89,"name":90,"version":91,"author":92,"author_profile":93,"description":94,"short_description":95,"active_installs":73,"downloaded":96,"rating":38,"num_ratings":97,"last_updated":98,"tested_up_to":16,"requires_at_least":99,"requires_php":100,"tags":101,"homepage":105,"download_link":106,"security_score":107,"vuln_count":108,"unpatched_count":28,"last_vuln_date":109,"fetched_at":30},"wp-migrate-db","WP Migrate Lite – Migration Made Easy","2.7.7","WP Engine","https:\u002F\u002Fprofiles.wordpress.org\u002Fwpengine\u002F","\u003Cp>\u003Ca href=\"https:\u002F\u002Fdeliciousbrains.com\u002Fwp-migrate-db-pro\u002F?utm_source=wordpress.org&utm_medium=referral&utm_campaign=wp-migrate-readme&utm_content=first-description-link\" rel=\"nofollow ugc\">WP Migrate\u003C\u002Fa> is a WordPress migration plugin that makes migrating your database and exporting full sites easy, fast, and stress-free.\u003C\u002Fp>\n\u003Cp>\u003Ciframe loading=\"lazy\" title=\"MDB WP Org Plugin Video\" src=\"https:\u002F\u002Ffast.wistia.net\u002Fembed\u002Fiframe\u002Fvahu041lkd?dnt=1\" allow=\"autoplay; fullscreen\" allowtransparency=\"true\" frameborder=\"0\" scrolling=\"no\" class=\"wistia_embed\" name=\"wistia_embed\" msallowfullscreen width=\"750\" height=\"422\">\u003C\u002Fiframe>\u003Cscript src=\"https:\u002F\u002Ffast.wistia.net\u002Fassets\u002Fexternal\u002FE-v1.js\" async>\u003C\u002Fscript>\u003C\u002Fp>\n\u003Ch3>WP Migrate Lite Features\u003C\u002Fh3>\n\u003Cp>\u003Cstrong>Database Migrations\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cp>WP Migrate Lite can help move your WordPress database using an easy-to-follow three-step process.\u003C\u002Fp>\n\u003Col>\n\u003Cli>Find and replace content directly within the user interface.\u003C\u002Fli>\n\u003Cli>Export the SQL.\u003C\u002Fli>\n\u003Cli>Import into your new database using a tool such as phpMyAdmin.\u003C\u002Fli>\n\u003C\u002Fol>\n\u003Cp>Simple, right? WordPress database migrations shouldn’t have to be overly complicated or cumbersome. With WP Migrate Lite, database transfers become so much easier.\u003C\u002Fp>\n\u003Cp>\u003Cstrong>Full-Site Exports\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cp>WP Migrate Lite can now \u003Ca href=\"https:\u002F\u002Fdeliciousbrains.com\u002Fwp-migrate-db-pro\u002Fdoc\u002Ffull-site-exports\u002F?utm_source=wordpress.org&utm_medium=referral&utm_campaign=wp-migrate-readme&utm_content=full-site-exports\" rel=\"nofollow ugc\">export your entire site\u003C\u002Fa>, including the database, media uploads, themes, plugins, and other files required to create an exact copy of your site in a new environment. In the same friendly interface you know, you can configure your export, choose what you want to include or exclude, and then single-click your way to a downloadable ZIP file of your complete site. A perfect solution for simple migrations and site copying.\u003C\u002Fp>\n\u003Cp>\u003Cstrong>Import to Local\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cp>Thanks to our good friends at WP Engine, \u003Ca href=\"https:\u002F\u002Flocalwp.com\u002F?utm_source=migrate-wp-plugin-repo&utm_medium=wpmigrate&utm_campaign=local&utm_content=local-cta\" rel=\"nofollow ugc\">Local\u003C\u002Fa>—the #1 local WordPress development tool—can now \u003Ca href=\"https:\u002F\u002Fdeliciousbrains.com\u002Fwp-migrate-db-pro\u002Fdoc\u002Fimporting-wordpress-local-development-environment\u002F?utm_source=wordpress.org&utm_medium=referral&utm_campaign=wp-migrate-readme&utm_content=import-to-local\" rel=\"nofollow ugc\">import full-site ZIP archives\u003C\u002Fa> that have been exported using WP Migrate. Simply drag and drop the downloaded ZIP file into Local and you’re up and running with a complete copy of your site in minutes.\u003C\u002Fp>\n\u003Cp>\u003Cstrong>Find & Replace\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cp>WP Migrate can find and replace content anywhere in your WordPress database with support for serialized data. This makes it easier to migrate your database without risk of corruption.\u003C\u002Fp>\n\u003Cp>WP Migrate handles serialized data by first unserializing it, identifying individual strings, and replacing any matches with your desired content. Once this process is complete, the data is once again serialized and placed back in the database.\u003C\u002Fp>\n\u003Cp>Example: \u003Ccode>s:5:\"hello\"\u003C\u002Fcode> becomes \u003Ccode>s:11:\"hello world\"\u003C\u002Fcode>\u003C\u002Fp>\n\u003Cp>You can also run a find and replace on the current database even if you have no plans to migrate it.\u003C\u002Fp>\n\u003Cp>\u003Cstrong>Database Backups\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cp>WP Migrate can automatically back up your database before running a find and replace operation or on demand as needed.\u003C\u002Fp>\n\u003Ch3>Testimonials\u003C\u002Fh3>\n\u003Cp>We’ve made an impact since launching the first version of WP Migrate with over 300,000 active installs and hundreds of five-star reviews on WordPress.org. WP Migrate is, in our opinion, the best WordPress migration plugin. Don’t just take our word for it though:\u003C\u002Fp>\n\u003Cp>\u003Cem>[WP Migrate] might be the most amazing thing that has happened in a really long time in the #WordPress world\u003C\u002Fem> – Pippin Williamson – Founder, Sandhills Development.\u003C\u002Fp>\n\u003Cp>\u003Cem>Today, I give continued thanks to @dliciousbrains for migrate db pro and the ease at which it offers migrations from dev-to-and-from-staging\u003C\u002Fem> – Tom Mcfarlin – Senior Backend Engineer, WebDevStudios.\u003C\u002Fp>\n\u003Cp>\u003Cem>How did I ever survive without [WP Migrate] before? #winning\u003C\u002Fem> – Jenny Beaumont – Senior Project Manager, Human Made.\u003C\u002Fp>\n\u003Ch3>Migrate More with WP Migrate Pro\u003C\u002Fh3>\n\u003Cp>If you’re in need of a complete, reliable, and fast push\u002Fpull site migration solution with fine-tuned control over the database, media uploads, themes, plugins, and other wp-content files, then WP Migrate Pro is for you.\u003C\u002Fp>\n\u003Cp>The pro features in WP Migrate fit perfectly into any WordPress developer’s toolbox. Here’s what you get when you upgrade:\u003C\u002Fp>\n\u003Cul>\n\u003Cli>Priority email support.\u003C\u002Fli>\n\u003Cli>Push and pull migrations that move the database, themes, plugins, media uploads, and other wp-content files directly between two WordPress sites.\u003C\u002Fli>\n\u003Cli>Advanced multisite features like pushing a subsite to single-site install.\u003C\u002Fli>\n\u003Cli>WP-CLI integration for running migrations from the command line.\u003C\u002Fli>\n\u003Cli>Backup your data before starting the migration.\u003C\u002Fli>\n\u003Cli>Targeted WordPress database migration. Select which tables to migrate and exclude post types from migrations.\u003C\u002Fli>\n\u003Cli>And that’s just the tip of the iceberg. We’re always working on adding value to WP Migrate!\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>All of these features and more are yours when you \u003Ca href=\"https:\u002F\u002Fdeliciousbrains.com\u002Fwp-migrate-db-pro\u002Fupgrade\u002F?utm_source=wordpress.org&utm_medium=referral&utm_campaign=wp-migrate-readme&utm_content=upgrade-to-pro\" rel=\"nofollow ugc\">upgrade to WP Migrate Pro\u003C\u002Fa>.\u003C\u002Fp>\n\u003Cp>\u003Ciframe loading=\"lazy\" title=\"WP Migrate DB Pro in Action Video\" src=\"https:\u002F\u002Ffast.wistia.net\u002Fembed\u002Fiframe\u002F5co63n4jqq?dnt=1\" allow=\"autoplay; fullscreen\" allowtransparency=\"true\" frameborder=\"0\" scrolling=\"no\" class=\"wistia_embed\" name=\"wistia_embed\" msallowfullscreen width=\"750\" height=\"422\">\u003C\u002Fiframe>\u003Cscript src=\"https:\u002F\u002Ffast.wistia.net\u002Fassets\u002Fexternal\u002FE-v1.js\" async>\u003C\u002Fscript>\u003C\u002Fp>\n","Migrate your database. Export full sites including media, themes, and plugins. Find and replace content with support for serialized data.",7865387,311,"2025-12-08T16:39:00.000Z","5.2","5.6",[58,102,103,60,104],"export-site","import-site","push-pull","https:\u002F\u002Fdeliciousbrains.com\u002F","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fwp-migrate-db.2.7.7.zip",99,1,"2025-11-17 22:17:25",{"slug":111,"name":112,"version":113,"author":114,"author_profile":115,"description":116,"short_description":117,"active_installs":118,"downloaded":119,"rating":120,"num_ratings":121,"last_updated":122,"tested_up_to":16,"requires_at_least":123,"requires_php":124,"tags":125,"homepage":129,"download_link":130,"security_score":120,"vuln_count":131,"unpatched_count":28,"last_vuln_date":132,"fetched_at":30},"customizer-export-import","Customizer Export\u002FImport","0.9.8","Beaver Builder","https:\u002F\u002Fprofiles.wordpress.org\u002Fbeaverbuilder\u002F","\u003Ch4>Customizer Export\u002FImport\u003C\u002Fh4>\n\u003Cp>The Customizer Export\u002FImport plugin allows you to export or import your WordPress customizer settings from directly within the customizer interface! If your theme makes use of the WordPress customizer for its settings, this plugin is for you!\u003C\u002Fp>\n\u003Cp>Please visit our blog for more info on the \u003Ca href=\"https:\u002F\u002Fwww.wpbeaverbuilder.com\u002Fwordpress-customizer-export-import-plugin\u002F?utm_source=external&utm_medium=wp-repo&utm_campaign=customizer-export-description\" rel=\"nofollow ugc\">Customizer Export\u002FImport plugin\u003C\u002Fa>.\u003C\u002Fp>\n\u003Ch4>New! Export Options\u003C\u002Fh4>\n\u003Cp>The Customizer Export\u002FImport plugin previously only exported options saved as theme mods using the \u003Ca href=\"https:\u002F\u002Fcodex.wordpress.org\u002FFunction_Reference\u002Fget_theme_mods\" rel=\"nofollow ugc\">get_theme_mods\u003C\u002Fa> function, but that is no more! The Customizer Export\u002FImport plugin now exports settings saved as options as well!\u003C\u002Fp>\n\u003Ch4>How It Works\u003C\u002Fh4>\n\u003Cp>Exporting customizer settings is easy. Click the export button from within the customizer and a file will automatically begin downloading with your settings. Export files are named after your theme and can only be used to import settings for the theme or child theme that they came from. Export files contain a serialized dump of mods retrieved using the \u003Ca href=\"https:\u002F\u002Fcodex.wordpress.org\u002FFunction_Reference\u002Fget_theme_mods\" rel=\"nofollow ugc\">get_theme_mods\u003C\u002Fa> function or customizer settings saved as options.\u003C\u002Fp>\n\u003Cp>Importing customizer settings is just as easy. Choose the export file you would like to import, select whether you would like to download and import images (similar to importing posts), and finally, click the import button. Once your settings have been imported the page will refresh and your new design will be displayed.\u003C\u002Fp>\n\u003Ch4>Exporting Custom Options\u003C\u002Fh4>\n\u003Cp>Developers can also have arbitrary options that aren’t part of the customizer exported by using the cei_export_option_keys filter. Those options can be exported and imported by adding your option key to the array of options that will be exported as shown below.\u003C\u002Fp>\n\u003Cpre>\u003Ccode>function my_export_option_keys( $keys ) {\n    $keys[] = 'my_option_key';\n    $keys[] = 'another_option_key';\n    return $keys;\n}\n\nadd_filter( 'cei_export_option_keys', 'my_export_option_keys' );\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Ch4>Known Issues\u003C\u002Fh4>\n\u003Cp>This plugin currently only works for active themes, not themes that are being previewed with either the Theme Test Drive plugin or the new customizer theme preview.\u003C\u002Fp>\n\u003Ch4>Contribute!\u003C\u002Fh4>\n\u003Cp>We’d love to hear your feedback as to how we could improve the Customizer Export\u002FImport plugin, or better yet, see theme developers actively contribute! Don’t hesitate to let us know if you’re interested in contributing as we would gladly have others on board.\u003C\u002Fp>\n\u003Cp>The Customizer Export\u002FImport plugin is brought to you by the fine folks at \u003Ca href=\"https:\u002F\u002Fwww.wpbeaverbuilder.com\u002F?utm_source=external&utm_medium=wp-repo&utm_campaign=customizer-export-description\" rel=\"nofollow ugc\">Beaver Builder\u003C\u002Fa>.\u003C\u002Fp>\n","Easily export or import your WordPress customizer settings!",100000,2778794,96,114,"2026-01-14T15:16:00.000Z","3.6","",[126,127,128,20,82],"customizer","customizer-export","customizer-import","https:\u002F\u002Fwww.wpbeaverbuilder.com\u002Fwordpress-customizer-export-import-plugin\u002F?utm_source=external&utm_medium=customizer-export&utm_campaign=plugins-page","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fcustomizer-export-import.0.9.8.zip",3,"2024-09-06 00:00:00",{"slug":134,"name":135,"version":136,"author":137,"author_profile":138,"description":139,"short_description":140,"active_installs":118,"downloaded":141,"rating":27,"num_ratings":142,"last_updated":143,"tested_up_to":16,"requires_at_least":144,"requires_php":145,"tags":146,"homepage":124,"download_link":151,"security_score":51,"vuln_count":152,"unpatched_count":28,"last_vuln_date":153,"fetched_at":30},"woo-order-export-lite","Advanced Order Export For WooCommerce","4.0.6","algol.plus","https:\u002F\u002Fprofiles.wordpress.org\u002Falgolplus\u002F","\u003Cp>This plugin helps you to \u003Cstrong>easily\u003C\u002Fstrong> export WooCommerce order data.\u003C\u002Fp>\n\u003Cp>Export any custom field assigned to orders\u002Fproducts\u002Fcoupons is easy and you can select from various formats to export the data in such as Excel, CSV, XML, JSON, PDF and HTML.\u003C\u002Fp>\n\u003Ch4>Features\u003C\u002Fh4>\n\u003Cul>\n\u003Cli>\u003Cstrong>select\u003C\u002Fstrong> \u003Ca href=\"https:\u002F\u002Fdocs.algolplus.com\u002Falgol_order_export\u002Fexport-now\u002Fset-up-fields-to-export\u002F\" rel=\"nofollow ugc\">the fields to export\u003C\u002Fa>\u003C\u002Fli>\n\u003Cli>\u003Cstrong>rename\u003C\u002Fstrong> labels \u003C\u002Fli>\n\u003Cli>\u003Cstrong>reorder\u003C\u002Fstrong> columns \u003C\u002Fli>\n\u003Cli>export \u003Cstrong>custom fields\u003C\u002Fstrong> or terms for products\u002Forders\u003C\u002Fli>\n\u003Cli>\u003Cstrong>group data\u003C\u002Fstrong> \u003Ca href=\"https:\u002F\u002Fdocs.algolplus.com\u002Falgol_order_export\u002Fexport-now\u002Foverview-12\u002F#summary-reports\" rel=\"nofollow ugc\">by products or customers\u003C\u002Fa>\u003C\u002Fli>\n\u003Cli>export orders via  \u003Cstrong>bulk action\u003C\u002Fstrong> from orders list \u003C\u002Fli>\n\u003Cli>apply \u003Cstrong>powerful filters\u003C\u002Fstrong> and much more\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch4>Export includes\u003C\u002Fh4>\n\u003Cul>\n\u003Cli>order data\u003C\u002Fli>\n\u003Cli>summary order details (# of items, discounts, taxes etc…)\u003C\u002Fli>\n\u003Cli>customer details (both shipping and billing)\u003C\u002Fli>\n\u003Cli>product attributes\u003C\u002Fli>\n\u003Cli>coupon details\u003C\u002Fli>\n\u003Cli>order item metadata, etc.\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch4>Use this plugin to export orders for\u003C\u002Fh4>\n\u003Cul>\n\u003Cli>sending order data to 3rd part drop shippers\u003C\u002Fli>\n\u003Cli>updating your accounting system\u003C\u002Fli>\n\u003Cli>analysing your order data\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch4>Pro version\u003C\u002Fh4>\n\u003Cp>Are you looking to have your WooCommerce products drop shipped from a third party? Our plugin can help you export your orders to CSV\u002FXML\u002Fetc and send them to your drop shipper. You can even automate this process with \u003Ca href=\"https:\u002F\u002Falgolplus.com\u002Fplugins\u002Fdownloads\u002Fadvanced-order-export-for-woocommerce-pro\u002F\" rel=\"nofollow ugc\">Pro version\u003C\u002Fa> .\u003C\u002Fp>\n\u003Ch4>Pro version features\u003C\u002Fh4>\n\u003Cul>\n\u003Cli>Export a single order immediately \u003Ca href=\"https:\u002F\u002Fdocs.algolplus.com\u002Falgol_order_export\u002Fpro-version-algol_order_export\u002Fstatus-change-jobs\u002F\" rel=\"nofollow ugc\">after a status change\u003C\u002Fa> (e.g., after payment)\u003C\u002Fli>\n\u003Cli>Export orders on \u003Ca href=\"https:\u002F\u002Fdocs.algolplus.com\u002Falgol_order_export\u002Fpro-version-algol_order_export\u002Fscheduled-jobs\u002Fschedule\u002F\" rel=\"nofollow ugc\">a flexible schedule\u003C\u002Fa>\u003C\u002Fli>\n\u003Cli>Exported orders can be sent to \u003Ca href=\"https:\u002F\u002Fdocs.algolplus.com\u002Falgol_order_export\u002Fpro-version-algol_order_export\u002Fdestination-block\u002Foverview-14\u002F\" rel=\"nofollow ugc\">multiple locations at once\u003C\u002Fa> – via email, FTP, and various APIs\u003C\u002Fli>\n\u003Cli>Updating Google Sheets\u002FDrive is also possible, but this requires \u003Ca href=\"https:\u002F\u002Fdocs.algolplus.com\u002Falgol_order_export\u002Fpro-version-algol_order_export\u002Fdestination-block\u002Fzapier\u002Fadding-a-zapier-account\u002F\" rel=\"nofollow ugc\">Zapier service\u003C\u002Fa>\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>For complete list of features –  please visit \u003Ca href=\"https:\u002F\u002Falgolplus.com\u002Fplugins\u002Fdownloads\u002Fadvanced-order-export-for-woocommerce-pro\u002F\" rel=\"nofollow ugc\">Advanced Order Export For WooCommerce\u003C\u002Fa>\u003C\u002Fp>\n\u003Ch4>Compatibility\u003C\u002Fh4>\n\u003Cp>Our plugin correctly exports custom fields (added by 3rd-party plugins) in most cases. But for some complex plugins –  you should \u003Ca href=\"https:\u002F\u002Fdocs.algolplus.com\u002Falgol_order_export\u002Fdevelopers-algol_order_export\u002Fcodes-for-plugins-developers-algol_order_export\u002Foverview-17\u002F\" rel=\"nofollow ugc\">use snippet\u003C\u002Fa>.\u003C\u002Fp>\n","Export WooCommerce orders to Excel, CSV, XML, JSON, PDF and HTML. Best free order export plugin for WooCommerce.",3717800,347,"2025-12-03T05:06:00.000Z","4.7","7.4.0",[20,147,148,149,150],"export-orders","order","order-export","woocommerce","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fwoo-order-export-lite.4.0.6.zip",8,"2024-11-12 14:44:29",{"attackSurface":155,"codeSignals":225,"taintFlows":248,"riskAssessment":249,"analyzedAt":254},{"hooks":156,"ajaxHandlers":221,"restRoutes":222,"shortcodes":223,"cronEvents":224,"entryPointCount":28,"unprotectedCount":28},[157,162,164,166,168,171,173,178,181,183,185,188,191,195,197,199,201,204,208,213,217],{"type":158,"name":159,"callback":160,"file":161,"line":14},"filter","jekyll_export_taxonomy_filters","closure","docs\\examples\\filter-by-category.php",{"type":158,"name":159,"callback":160,"file":161,"line":163},22,{"type":158,"name":159,"callback":160,"file":161,"line":165},32,{"type":158,"name":159,"callback":160,"file":161,"line":167},42,{"type":158,"name":169,"callback":160,"file":161,"line":170},"jekyll_export_post_types",53,{"type":158,"name":169,"callback":160,"file":161,"line":172},61,{"type":158,"name":174,"callback":175,"file":176,"line":177},"jekyll_export_skip_uploads","__return_true","docs\\examples\\optimization-examples.php",14,{"type":158,"name":179,"callback":160,"file":176,"line":180},"jekyll_export_excluded_upload_dirs",21,{"type":158,"name":169,"callback":160,"file":176,"line":182},41,{"type":158,"name":169,"callback":160,"file":176,"line":184},46,{"type":158,"name":186,"callback":160,"file":176,"line":187},"jekyll_export_markdown_converter_options",55,{"type":158,"name":189,"callback":160,"file":176,"line":190},"jekyll_export_meta",69,{"type":192,"name":193,"callback":160,"file":176,"line":194},"action","jekyll_export",95,{"type":192,"name":196,"callback":160,"file":176,"line":27},"jekyll_export_complete",{"type":158,"name":174,"callback":175,"file":176,"line":198},121,{"type":158,"name":169,"callback":160,"file":176,"line":200},124,{"type":158,"name":202,"callback":160,"file":176,"line":203},"option_active_plugins",134,{"type":192,"name":205,"callback":206,"file":176,"line":207},"init","my_jekyll_export_optimizations",145,{"type":192,"name":209,"callback":210,"file":211,"line":212},"admin_menu","register_menu","jekyll-exporter.php",82,{"type":192,"name":214,"callback":215,"file":211,"line":216},"current_screen","callback",83,{"type":158,"name":218,"callback":219,"file":211,"line":220},"filesystem_method","filesystem_method_filter",377,[],[],[],[],{"dangerousFunctions":226,"sqlUsage":227,"outputEscaping":230,"fileOperations":245,"externalRequests":28,"nonceChecks":28,"capabilityChecks":246,"bundledLibraries":247},[],{"prepared":228,"raw":28,"locations":229},6,[],{"escaped":231,"rawEcho":232,"locations":233},4,5,[234,237,239,241,243],{"file":176,"line":235,"context":236},163,"raw output",{"file":176,"line":238,"context":236},170,{"file":176,"line":240,"context":236},189,{"file":176,"line":242,"context":236},194,{"file":176,"line":244,"context":236},195,9,2,[],[],{"summary":250,"deductions":251},"The \"jekyll-exporter\" plugin v3.1.1 presents a generally strong security posture based on the provided static analysis. It has a zero-attack surface for AJAX handlers and REST API routes, and importantly, no unprotected entry points were identified. The plugin also demonstrates good practices with 100% of its SQL queries utilizing prepared statements, and it has no known historical vulnerabilities. This indicates a diligent approach to security development and maintenance by the authors.\n\nHowever, a notable area of concern is the output escaping, where only 44% of outputs are properly escaped. This leaves a significant portion of potentially user-controlled data vulnerable to cross-site scripting (XSS) attacks if not handled carefully within the plugin's logic or theme integration. While taint analysis shows no critical or high severity flows, the incomplete output escaping remains a potential vector for client-side attacks. The absence of nonce checks on AJAX handlers and capability checks on all potential entry points (though the attack surface is zero) are also minor points of attention for a truly hardened plugin.\n\nIn conclusion, \"jekyll-exporter\" v3.1.1 benefits from a clean vulnerability history and a small, well-protected attack surface. Its primary weakness lies in the incomplete output escaping, which requires careful monitoring and mitigation. While not indicative of immediate critical risks due to the lack of identified taint flows, it represents a notable area for improvement to ensure comprehensive security.",[252],{"reason":253,"points":228},"Incomplete output escaping","2026-03-16T19:33:04.001Z",{"wat":256,"direct":265},{"assetPaths":257,"generatorPatterns":260,"scriptPaths":261,"versionParams":262},[258,259],"\u002Fwp-content\u002Fplugins\u002Fjekyll-exporter\u002Fcss\u002Fadmin.css","\u002Fwp-content\u002Fplugins\u002Fjekyll-exporter\u002Fjs\u002Fjekyll-exporter.js",[],[259],[263,264],"jekyll-exporter\u002Fcss\u002Fadmin.css?ver=","jekyll-exporter\u002Fjs\u002Fjekyll-exporter.js?ver=",{"cssClasses":266,"htmlComments":267,"htmlAttributes":268,"restEndpoints":269,"jsGlobals":270,"shortcodeOutput":271},[],[],[],[],[],[]]