{"id":19146379,"url":"https://github.com/netzstrategen/wordpress-publishing-importer","last_synced_at":"2026-04-20T06:06:26.152Z","repository":{"id":73514592,"uuid":"53604135","full_name":"netzstrategen/wordpress-publishing-importer","owner":"netzstrategen","description":"Imports content from publishing industry content management systems.","archived":false,"fork":false,"pushed_at":"2023-03-27T14:31:45.000Z","size":88,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":19,"default_branch":"master","last_synced_at":"2025-01-03T16:26:43.338Z","etag":null,"topics":["dpa","importer","publishing","woocommerce-subscriptions","wordpress","wordpress-plugin"],"latest_commit_sha":null,"homepage":"","language":"PHP","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/netzstrategen.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2016-03-10T17:35:01.000Z","updated_at":"2023-03-10T13:57:50.000Z","dependencies_parsed_at":"2023-06-01T06:30:30.728Z","dependency_job_id":null,"html_url":"https://github.com/netzstrategen/wordpress-publishing-importer","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/netzstrategen%2Fwordpress-publishing-importer","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/netzstrategen%2Fwordpress-publishing-importer/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/netzstrategen%2Fwordpress-publishing-importer/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/netzstrategen%2Fwordpress-publishing-importer/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/netzstrategen","download_url":"https://codeload.github.com/netzstrategen/wordpress-publishing-importer/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":240229935,"owners_count":19768588,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["dpa","importer","publishing","woocommerce-subscriptions","wordpress","wordpress-plugin"],"created_at":"2024-11-09T07:43:59.441Z","updated_at":"2026-04-20T06:06:26.120Z","avatar_url":"https://github.com/netzstrategen.png","language":"PHP","funding_links":[],"categories":[],"sub_categories":[],"readme":"# WordPress Publishing Importer\n\nA solid framework to import content and data (also e.g. subscriptions) from a traditional / legacy publishing industry system into WordPress and WooCommerce.\n\nFor each system and content type a different parser can be implemented to convert the content into WordPress posts, terms, and users.\n\nSource systems and parsers are defined in a `config.json` file.\n\nSource data is expected in files by default. Various formats are supported: CSV, JSON, XML (both one-entity-per-file and one-entity-per-element).\n\nThe framework is optimized for speed. Previously imported items are only imported again if their content has changed. Also, custom rules can be defined to force or omit updates for already imported data (e.g. when they were manually edited or sent to trash). Re-running the import on unchanged data only takes a few seconds to complete.\n\nImports are supposed to be run via WP-CLI:\n\n```console\n$ time wp --user=system publishing-importer import\nProcessed epaper 2000106 (ID 686545).\nCancelled subscription 648842.\nCancelled subscription 649075.\nCancelled subscription 652075.\nCancelled subscription 652082.\nCancelled subscription 652316.\nCancelled subscription 652317.\nSuccess: Import completed.\n\nreal\t0m1.739s\nuser\t0m1.317s\nsys\t0m0.376s\n```\n\n\n## Parsers\n\n### DPA News\n\nReads XML files in NITF format (News Industry Text Format) provided by the German national Deutsche Presse Agentur and converts them into WordPress posts. The DPA pushes the source files via FTP.\n\n### alfamedia Subscriptions\n\nReads exported subscriptions from an XML file and converts them into WordPress user accounts and WooCommerce Subscriptions.\n\nRequired plugins:\n- WooCommerce\n- WooCommerce Subscriptions\n- email-verification-for-woocommerce\n- woocommerce-sequential-subscription-numbers\n\n\n## Configuration options\n\nConfiguration is read from the following files:\n\n1. `config.json` in the plugin folder\n\n2. `.publishing_importer.config.json` in the site root folder (optional)\n\nIdentical keys in the second file are overwriting/replacing the keys in the first file.\n\nEach Parser can define its own options as necessary. Only a few are required:\n\n\nKey                   |Description|Data Type\n----------------------|---|---\n`publisher`           |**(required)** Name of the publisher; e.g.: `DPA`.|string\n`system`              |**(required)** Name of the publishing system; e.g.: `weblines`.|string\n`types`               | |object[]\n\u0026#8866; `parserClass` |**(required)** Class name of the parser class to process the data.|string\n\u0026#8866; `directory`   |**(required)** Folder in which source file(s) are found.|string\n\u0026#8866; `recursive`   |Whether to also discover source files in nested subdirectories.|bool\n\u0026#8866; `file`        |File in which source data is found. Specifying this triggers row processing.|string\n\u0026#8866; `media`       |Folder relative to `directory` where image/media files are located.|string\n\u0026#8866; `defaultImage`|Name of a default image to use if content has none.|string\n\u0026#8866; `keywords`    |Filter tags.|string[]\n\u0026#8866; `maxAge`      |Days to retain articles in the local filesystem.|integer\n`defaultAuthor`       |**(required)** WordPress username to assign as author of imported content and data.|string\n`trashedFolder`       |To avoid importing deleted posts again, the importer can keep track of the history. Specify a folder relative to the WordPress root folder in which to store the markers; e.g.: `files/dpa/trashed`|string\n`uploadsPrefix`       |A prefix to prepend to imported image/media files to avoid name clashes or allow quick identification of third-party content; e.g.: `dpa-`|string\n`apiKey`              |API key for parser implementation, if necessary.|string\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnetzstrategen%2Fwordpress-publishing-importer","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fnetzstrategen%2Fwordpress-publishing-importer","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnetzstrategen%2Fwordpress-publishing-importer/lists"}