WordPress Plugin Setup
The official FeedCentral WordPress plugin (feedcentral-connector) consumes this same API —
everything documented elsewhere in this portal applies to it too. This page covers plugin-specific
setup and troubleshooting.
The plugin actively syncs articles into real WordPress Posts today, including topic mapping, an hourly automatic sync, media handling, and AI-content awareness.
1. FeedCentral URL
In the plugin's Settings page, set the FeedCentral Base URL to your FeedCentral host
(https://your-feedcentral-host). This is fully configurable — there is no hardcoded default.
2. API Credential
Create a Credential from the dashboard with at least feed.read and
subscription.manage (add ai.usage.read/ai.images.read if you want the plugin's AI Usage/AI
Images admin pages to work). Paste the secret into the Settings page's FeedCentral Credential
field.
For server-managed installs, the credential can instead be set via a wp-config.php constant
(NEWS_CENTRAL_CONNECTOR_CENTRAL_CREDENTIAL), which takes priority over the stored option and
keeps the secret out of the database entirely.
3. Test Connection
Click Test Connection on the Settings page. This makes one GET /api/v1/me call — safe,
read-only, never entitlement-charged — and reports success or a specific failure reason (invalid
credential, missing scope, rate-limited, unreachable, etc.).
4. Topic selection & category mapping
On the News Selection page, subscribe to the topics you want, and map each one to one or more WordPress categories. The page shows two independent facts per topic: whether it's Subscribed and whether it's Mapped — a topic can be one without the other, and the page flags that explicitly rather than silently doing the wrong thing.
Saving writes to FeedCentral first (the authoritative subscription set); the local WordPress category mapping is saved only if that succeeds.
5. Sync behavior
The plugin syncs automatically once an hour (WordPress Cron), or on demand via the Sync Now button on the Sync page — both use the identical code path.
Each run pages through the feed using a cursor (see Pagination), materializing each item as a WordPress Post. The cursor only advances after every item in a page reaches a durable outcome — if anything fails partway through a page, that page is safely retried on the next run; nothing is duplicated or lost. A large initial backlog may take more than one run to fully catch up — this is normal, not a malfunction.
An article with no resolved WordPress category mapping is never published Uncategorized — it's skipped until you fix the mapping.
If you've edited a synced Post's title/content by hand since the last sync, the plugin detects that and preserves your edit rather than overwriting it — only categories/metadata refresh on a later sync.
6. Media
Two modes, chosen on the Settings page:
- External (default) — the plugin stores the article's image URL only; nothing is downloaded.
- Localized (opt-in) — the plugin downloads, validates, and stores the image in your Media Library, setting it as the Featured Image. You are responsible for ensuring this use is appropriate for your situation (this is not legal advice).
An admin's manually-set Featured Image is detected and never silently overwritten by a later sync.
Troubleshooting
The Sync page shows the last run's status, timestamps, and a plain-English summary of what went wrong, if anything — mirroring the real failure it hit:
| Symptom | Likely cause |
|---|---|
| "rejected the configured credential" | Credential is invalid or revoked — issue a new one. |
| "missing the feed.read scope" (or similar) | The Credential doesn't hold a scope the sync needs — see API Keys & Scopes. |
| "not entitled" | Your Plan doesn't include this capability. |
| "quota reached ... retry after Ns" | You've hit your entitlement quota for the current period — see Usage & Quotas. |
| "could not be reached" | Check the FeedCentral Base URL and that your WordPress host can make outbound HTTPS requests. |
A failed sync run never deletes any Post, and never advances past the page it failed on.