inspiredminds / contao-wordpressimport
Contao 4 bundle that allows you to import news articles from WordPress posts via the WordPress JSON API.
Fund package maintenance!
fritzmg
Installs: 924
Dependents: 0
Suggesters: 0
Security: 0
Stars: 8
Watchers: 3
Forks: 3
Open Issues: 2
Type:contao-bundle
Requires
- php: >=7.1
- contao/core-bundle: ^4.9 || ^5.0
- doctrine/dbal: ^2.11 || ^3.0
- guzzlehttp/guzzle: ^6.3 || ^7.0
- nyholm/psr7: ^1.2
- paquettg/php-html-parser: ^2.0
- symfony/config: ^4.4 || ^5.0 || ^6.0
- symfony/console: ^4.4 || ^5.0 || ^6.0
- symfony/dependency-injection: ^4.4 || ^5.0 || ^6.0
- symfony/event-dispatcher: ^4.4 || ^5.0 || ^6.0
- symfony/http-kernel: ^4.4 || ^5.0 || ^6.0
- webmozart/path-util: ^2.0
Requires (Dev)
- friendsofphp/php-cs-fixer: ^2.16
Suggests
- codefog/contao-news_categories: Allows to import news categories from WordPress as well.
README
Contao WordPress Import
Contao 4 extension that allows you to import news articles from WordPress posts via the WordPress JSON API.
Installation
Require the bundle via composer:
composer require inspiredminds/contao-wordpressimport
If you use the Contao Standard Edition, you will have to add
new WordPressImportBundle\WordPressImportBundle()
to your AppKernel.php
.
Then execute the Contao Install Tool to update the database.
Usage
Once installed, you will have new options within a news archive:
- WordPress URL: This is the URL to your remote WordPress installation, from which you want to import news. This WordPress installation must have the WP REST API available. It's included and active by default in WordPress 4.7 and higher.
- Import periodically: Instead of importing the WordPress posts via console command (see below), you can activate a periodic import here, which will be done via Contao's cronjob.
- Default author: Every imported news item will have this author assigned, if no other author is available (see next option).
- Import authors: This will generate new backend users for each new found author. Existing authors are identified by their name, so if your Contao installation already has a backend user with the same name as an author from a WordPress post, that backend user will be used as the author. Note: the automatically generated authors are just bare entries. They will only have their name set. They will not have a username or password and they will be disabled by default.
- Import comments: This will import the comments of each WordPress post, if the Contao Comments Bundle is present. Note: the email field of each commenter will not be filled, since that is obviously not available via the public WP REST API.
- Import folder: When a WordPress posts gets imported, its teaser image and all images from its detailed content are saved to this folder.
- Category: This is an optional root category, under which every imported category of the WordPress posts will reside. If you do not specify a root category, the imported categories will be imported to the root. Note: this option will only be available, if you have the
news_categories
extension installed.
Console Command
To import the WordPress posts into your Contao installation, you can use the following console command:
vendor/bin/contao-console wordpressimport
Optionally you can define the limit of how many WordPress posts are imported in one go:
vendor/bin/contao-console wordpressimport 10
This will only import 10 WordPress posts at a time.
Use bin/console
in the Contao Standard Edition.
Periodic import
If you activated the periodic import, the WordPress posts will be imported hourly by Contao's cronjob.
Note: by default only 10 items will be imported with each cronjob execution. The import can take a long time (depending on the number of WordPress posts and the number of images to be downloaded). This limit is there so that a cronjob execution does not block a user's request for a long time (or at least until the max_execution_time
limit is hit). You can change this limit in the System Settings.
Events
Version 2.1.0
introduced an WordPressImportBundle\Event\ImportWordPressPostEvent
which is fired for each imported WordPress post after it has been fully processed by the extension. It holds references to the used HTTP client instance, the WordPress post object and the Contao\NewsModel
instance. This allows you to modify the imported news article.