WordPress plugin intelligence profile

Yard DeepL

This plugin registers secure API endpoints that allow you to request translations directly from DeepL without exposing your DeepL API-key.

WP PlugIndex snapshot

Current directory snapshot

Tested up to WordPress 7.0
Current version2.1.0
WordPress coverageTested up to WordPress 7.0
Minimum stackWP 6.0 · PHP 8.0
Directory statusactive
Last directory update3 Aug 20263mo ago
Active installations20Adoption metric — not a quality score
WordPress.org ratingNo WordPress.org ratings yet
Official packageDirect from WordPress.org

Repository metrics are context, not quality scores. Active installations measure adoption and can strongly reflect a plugin’s age and historical popularity. Ratings, recent updates and “Tested up to” metadata also do not guarantee modern code, error-free operation, security, feature completeness or suitability for a particular site. Why active installs don’t tell the whole story →

WP PlugIndex currently records Yard DeepL version 2.1.0 as active, updated 3mo ago and tested up to WordPress 7.0.

Overview

About this plugin

This plugin registers secure API endpoints that allow you to request translations directly from DeepL without exposing your DeepL API-key. These endpoints are only accessible when a valid nonce is provided. When providing translations to website visitors, you can configure which languages are supported for translation.

Caching Mechanism

Each object that is translated will store its cached translation in the wp_postmeta table within the database. This caching mechanism ensures that translations are efficiently reused, reducing unnecessary API requests to DeepL and saving costs.

  • Serving Cached Translations: If a cached translation is newer than the post_modified date of the object, the cached version is served.
  • Fetching New Translations: When the post_modified date of the object is more recent than the cached translation, a new translation is fetched from DeepL. Once retrieved, this translation is immediately cached for future use.
  • Cache Authorization: Only logged-in users with the edit_posts capability (or a custom capability configured via the yard::deepl/cache_capability filter) are permitted to create new cache entries. Requests from users without this capability will still return a translation from DeepL, but the result will not be stored in the cache.

This approach minimizes the number of API calls to DeepL, ensuring translations are kept up to date only when necessary.

Admin: Cache Metabox

A metabox labeled Yard DeepL is displayed on the edit screen of supported post types (default: page). It provides two options:

  • Disable translation cache: When checked, the cache is bypassed for this object. Useful for posts with dynamic content that should always be translated fresh.
  • Clear translation cache: When checked and the post is saved, all cached translations for this object are deleted.

Admin: Translation Cache Column

A Translation cache column is added to the post list screen of all supported post types. Its purpose is to notify editors which posts should be cached as soon as possible to avoid unnecessary DeepL API costs.

  • Green badge per language (e.g. NL, EN-US): a valid, up-to-date cached translation exists for that language. Visitor requests are served from cache at no cost.
  • Grey badge with a count per language (e.g. EN-US 42): no cache exists for that language and visitors have triggered that many live DeepL API calls. Hovering the badge shows the full count as a tooltip. These posts are the most urgent to cache.
  • —: the post has never been requested for translation, or caching is disabled for this post.

The uncached call count is only incremented for visitor requests (users without cache-write capability) and is automatically reset per language once a cache entry is stored. Posts with the Disable translation cache option enabled are excluded from the column entirely.

External Services

This plugin connects to the DeepL API to provide translations for content.

  • Service: DeepL API (https://www.deepl.com)
  • Purpose: To translate text from one language to another based on the provided target language.
  • Data Sent: Text content for translation, the target language code, and the DeepL API key (handled securely and never exposed to users).
  • Conditions: Data is sent when a request for translation is initiated.
  • Privacy Policy: DeepL Privacy Policy
  • Terms of Service: DeepL Terms of Service

com/v2/translate ).

Usage

Security

The API endpoints registered by this plugin are secured using a WordPress nonce. The nonce is passed to the front-end using the wp_localize_script function and is stored in a global JavaScript object ydpl which contains the following properties:

  • ydpl_translate_post_id: The ID of the post to be translated.
  • ydpl_rest_translate_url: The URL of the API endpoint for translation requests.
  • ydpl_supported_languages: The list of languages supported for translation.
  • ydpl_api_request_nonce: The nonce used for API validation.

When making requests to the API, ensure that the nonce is included in the request headers. ydpl_api_request_nonce on the front-end).

Rate limiting: Unauthenticated requests (or requests from users without the cache capability) are limited to 3 requests per 60 seconds per IP address. Authenticated users with the required cache capability (default: edit_posts) are exempt from this rate limit.

Cache capability: Only users with the edit_posts capability can trigger cache creation. This can be customized using the yard::deepl/cache_capability filter.

Example

Request:

ydpl_rest_translate_url, true);

ydpl_api_request_nonce);

statusText); } };

stringify({ text: ["Look another test"], target_lang: "DE" });

send(data);

Response:

" } ]<h3>Filters</h3>

* yard::deepl/cache_capability (default: edit_posts ) — The WordPress capability required to create cache entries. Users without this capability receive translations but results are not cached.

* yard::deepl/cache_metabox_post_types (default: ['page'] ) — Post types on which the Yard DeepL cache metabox is displayed.

* yard::deepl/disable_cache_metabox_post_types — Deprecated. Use yard::deepl/cache_metabox_post_types instead.

WordPress.org metadata

Plugin tags

Topics listed for this plugin in the WordPress.org directory.

  • deepl
  • secure
  • translating
Compatibility & maintenance

Compatibility & maintenance

Tested up to WordPress 7.0

Not yet marked as tested with WordPress 7.1. WordPress.org currently lists Tested up to 7.0.

Current WordPress releaseWordPress 7.1
WordPress.org Tested up to7.0
Minimum requirementsWordPress 6.0 · PHP 8.0
Update activity3 Aug 20263mo ago

“Tested up to” is directory metadata supplied by the plugin author. WP PlugIndex does not turn an older declaration into a claim that the plugin is incompatible.

Changes recorded by WP PlugIndex

Recent tracked changes

No tracked version or compatibility changes have been recorded by WP PlugIndex yet.

Tracking & source

WP PlugIndex tracks public WordPress.org directory metadata and records selected version, compatibility and availability changes as they are detected.

Plugin watchlist

Watch this plugin

Sign in to your WP PlugIndex account or create a free account. Free accounts can watch up to 5 plugins and see what changed.

Watch limit

Watchlist limit reached

You have reached your current active watch limit.