# WCPOS Polylang

Adds [Polylang](https://polylang.pro/) awareness to WCPOS so the POS only shows products for a single language — no duplicated translations in product search, the catalog grid, or cashier workflows. WCPOS Pro stores can pin a per-store language; free installs fall back to the Polylang default language.

## What It Does[​](#what-it-does "Direct link to What It Does")

* Filters WCPOS product and variation REST queries by language.
* Intercepts WCPOS **fast-sync** routes (the lightweight `posts_per_page=-1` + `fields` requests the POS uses to refresh its local index) so translated duplicates never reach the client.
* On free installs, applies the Polylang default language.
* On Pro installs, each store can choose its own language from a new **Language** section in the store editor.
* Respects WCPOS **POS-only** product visibility when building the fast-sync payload.

The integration no-ops cleanly when Polylang is not active — you can install the plugin ahead of enabling Polylang without errors.

## Installation[​](#installation "Direct link to Installation")

1

#### Install Polylang

Install [Polylang](https://wordpress.org/plugins/polylang/) (or Polylang Pro) and configure your site languages as normal. Make sure at least one language is set as the default.

2

#### Install WCPOS Polylang

Install from the WCPOS extensions directory at `WP Admin > POS > Settings > Extensions`, or download the latest release from the [GitHub releases page](https://github.com/wcpos/wcpos-polylang/releases) and upload via `Plugins > Add New > Upload Plugin`.

3

#### (Pro) Set a per-store language

If you run [multiple stores](/stores/.md) on WCPOS Pro, go to `POS > Stores`, edit a store, and pick its language from the **Language** sidebar section. Leave it at *Default* to use your Polylang default language.

## Per-Store Language (Pro)[​](#per-store-language-pro "Direct link to Per-Store Language (Pro)")

On WCPOS Pro, the plugin adds a **Language** section to the store editor sidebar. Each store can be pinned to a single Polylang language slug — products served to that store are filtered to that language only. Stores left on *Default* use the Polylang default language.

The per-store value is saved against the store post as `_wcpos_polylang_language` meta and is exposed via the WCPOS Pro stores REST API (`/wcpos/v1/stores`), so it round-trips through the POS like any other store setting.

## Compatibility Notes[​](#compatibility-notes "Direct link to Compatibility Notes")

* **POS-only products:** when POS-only mode is enabled in WCPOS settings, online-only product IDs are excluded from the fast-sync payload so they do not leak into the POS.
* **Free installs:** there is no UI for changing the language per store — the plugin uses Polylang's default language. If you need per-store languages, upgrade to [WCPOS Pro](/getting-started/pro-license.md).
* **Plugin unavailable:** if Polylang is deactivated, the plugin silently does nothing. It will not throw errors or block the POS.

## Developer Hooks[​](#developer-hooks "Direct link to Developer Hooks")

For advanced use, the plugin exposes a few filters:

| Filter                             | Purpose                                                                                               |
| ---------------------------------- | ----------------------------------------------------------------------------------------------------- |
| `wcpos_polylang_resolved_language` | Override the language used for a given request. Receives the resolved slug and the `WP_REST_Request`. |
| `wcpos_polylang_default_language`  | Override the fallback language when no per-store value is set.                                        |
| `wcpos_polylang_is_supported`      | Force the plugin on or off regardless of Polylang detection.                                          |
| `wcpos_polylang_minimum_version`   | Require a minimum Polylang version (default: no version gate).                                        |

## Requirements[​](#requirements "Direct link to Requirements")

WooCommerce

<!-- -->

: WooCommerce installed and activated

Polylang

<!-- -->

: Polylang (free or Pro) with at least one language configured

WCPOS

<!-- -->

: Free version works; per-store language selection requires WCPOS Pro

## Related[​](#related "Direct link to Related")

* [WCPOS WPML](/extensions/wpml.md)
* [WCPOS WP Multilang](/extensions/wp-multilang.md)
* [Multi-Store](/stores/.md)
* Source: [github.com/wcpos/wcpos-polylang](https://github.com/wcpos/wcpos-polylang)
