Install
Upload it under Plugins → Add New Plugin → Upload Plugin, then activate.
Install straight from GitHub with WP-CLI:
wp plugin install https://github.com/gitchrisqueen/cq-auto-featured-image-ai-translate/releases/download/v1.12.0/cq-auto-featured-image-ai-translate-1.12.0.zipStable tag: 1.12.0
WordPress plugin that finds posts without featured images, matches images from the
Media Library by title/filename similarity, sets featured images, and creates and
maintains Polylang translations using OpenAI. Includes a full content-library
audit/repair queue and WP-CLI tools under tools/.
The Stable tag: line above must always match the Version: header in
cq-auto-featured-image-ai-translate.php; the release workflow fails if they drift,
and the git tag (v<version>) is created from them when a release is published.
Configurable auto-translation (since 1.12.0)
Under Settings → CQ Auto Image + Translate → Settings:
- Enable auto-translation — master switch for all AI translation work: translation of newly published posts, the hourly backfill, translations created by Audit & Repair, and re-translation of updated source posts.
- Target Languages — one checkbox per Polylang target language (the source language is excluded). Auto-translation only creates or updates translations for checked languages.
Behavior when the master toggle is OFF or a language is unchecked: no NEW translations are generated or updated for it. Existing translations are left completely untouched — nothing is ever unpublished or deleted. Featured-image processing is not affected by either setting.
Upgrade notes
- Translation previously ran unconditionally, so the master toggle defaults ON — upgrading does not silently change behavior.
- Until the settings are saved for the first time, all target languages are treated as enabled. After the first save, the checked set is authoritative, and a language added to Polylang later must be checked before it is auto-translated.
Release & deploy flow
Merging to main no longer deploys to the live site. The flow is:
- Push/merge to
main→ci-release.ymlruns PHP lint + PHPCS, builds the plugin zip, and creates a draft GitHub release taggedv<plugin header version>with the zip attached. Repeat pushes refresh the draft; an already-published version tag skips release creation until the version is bumped. - Review the draft under the repo's Releases page and click Publish release.
- Publishing triggers
deploy.yml, which checks out the released tag and deploys over SFTP exactly as before (sameSFTP_*secrets). Prereleases never deploy.
To ship a change: bump the Version: header and the Stable tag: line here, add a
CHANGELOG.md entry, merge to main, then publish the draft release.
Releases
1 release. Each count is every asset in that release; expand a row for the breakdown.