Title: APSearch — Arabic &amp; Persian Search
Author: Faiz
Published: <strong>August 31, 2026</strong>
Last modified: August 31, 2026

---

Search plugins

![](https://ps.w.org/apsearch-arabic-persian-search/assets/banner-772x250.png?rev
=3674331)

![](https://ps.w.org/apsearch-arabic-persian-search/assets/icon-256x256.png?rev=
3674331)

# APSearch — Arabic & Persian Search

 By [Faiz](https://profiles.wordpress.org/faizahmaddae/)

[Download](https://downloads.wordpress.org/plugin/apsearch-arabic-persian-search.0.1.0.zip)

 * [Details](https://wordpress.org/plugins/apsearch-arabic-persian-search/#description)
 * [Reviews](https://wordpress.org/plugins/apsearch-arabic-persian-search/#reviews)
 *  [Installation](https://wordpress.org/plugins/apsearch-arabic-persian-search/#installation)
 * [Development](https://wordpress.org/plugins/apsearch-arabic-persian-search/#developers)

 [Support](https://wordpress.org/support/plugin/apsearch-arabic-persian-search/)

## Description

WordPress search fails on Arabic-script languages, and it fails silently. A visitor
searches **کتابها** and gets nothing, because the post says **کتاب‌ها** with a zero-
width non-joiner. Someone types **كتاب** with an Arabic Kaf while the content uses
the Persian **ک**. A product title carries diacritics; the query does not. Every
one of these is a lost search, a lost reader, and in a shop, a lost sale.

This plugin fixes it by keeping a normalized copy of your searchable text and matching
queries against that copy.

**What it normalizes**

 * Yeh family: ي, ى, ئ, ے, ې  ی
 * Kaf family: ك, ڪ  ک
 * Alef family: أ, إ, آ, ٱ  ا
 * Heh family: ة, ۀ, ہ, ھ  ه
 * Diacritics (harakat), Quranic marks and kashida/tatweel are ignored
 * Arabic-Indic (٠-٩) and Extended Arabic-Indic (۰-۹) digits become 0-9
 * Zero-width non-joiner (ZWNJ / نیم‌فاصله) and other invisible marks are ignored
 * Punctuation and repeated whitespace are ignored

**Works with**

 * The built-in search form and search results page
 * Any theme or block that runs a WP_Query search
 * WooCommerce product search (enable the `product` post type in settings)
 * WP-CLI: `wp apsearch reindex`, `wp apsearch status`, `wp apsearch normalize "
   متن"`

**Privacy**

The plugin sends nothing anywhere. It stores one normalized text field per post 
in your own database.

## Screenshots

[⌊Settings screen with index status.⌉⌊Settings screen with index status.⌉[

Settings screen with index status.

[⌊Normalization rules.⌉⌊Normalization rules.⌉[

Normalization rules.

[⌊The normalization test tool.⌉⌊The normalization test tool.⌉[

The normalization test tool.

## Installation

 1. Install and activate the plugin.
 2. Go to **Settings  APSearch**.
 3. Choose which post types to index and press **Build / rebuild index**.
 4. Search your site and compare.

## FAQ

### Do I need to rebuild the index after adding a post?

No. Posts are indexed automatically when saved. A full rebuild is only needed after
you install the plugin or change the normalization rules.

### Does this slow down my site?

Search adds one LEFT JOIN on a single meta row per post. Indexing happens on save,
not on view.

### Does it work with a search plugin like Relevanssi or SearchWP?

Those plugins replace WordPress search entirely rather than filtering it, so this
plugin steps aside and your results come from them. If Relevanssi is active you 
will see a one-time notice in the admin saying so.

You then have two choices: deactivate the other plugin and search with this one,
or keep it and feed it this plugin’s normalization using the snippet in the next
answer.

### How do I make Relevanssi understand Arabic and Persian spelling?

Relevanssi stores search terms exactly as they are written, so `کتاب‌ها` (with ZWNJ)
and `کتابها` stay different words to it, as do `كتاب` and `کتاب`, and `۱۴۰۳` and`
1403`.

Add this to your theme’s `functions.php` or a small site plugin:

    ```
    add_filter(
        'relevanssi_remove_punctuation',
        function ( $string ) {
            if ( class_exists( 'APSearch_Normalizer' ) ) {
                $string = APSearch_Normalizer::normalize( $string );
            }
            return $string;
        },
        20
    );
    ```

Relevanssi runs that filter inside its tokenizer, which it uses both when indexing
your posts and when parsing what a visitor typed. Normalizing in one place therefore
fixes both sides at once. Priority 20 makes it run after Relevanssi’s own punctuation
handling.

**Rebuild the Relevanssi index after adding this** (Relevanssi’s own settings screen),
or its stored terms will still be the unnormalized ones.

This is a documented starting point, not a supported integration — the snippet touches
Relevanssi’s filter, and Relevanssi’s own settings still decide what gets indexed.

### Does it support Urdu, Pashto, Kurdish or Hebrew?

Urdu, Pashto and Dari letter variants are covered. Hebrew needs no normalization
of this kind and is unaffected.

## Reviews

There are no reviews for this plugin.

## Contributors & Developers

“APSearch — Arabic & Persian Search” is open source software. The following people
have contributed to this plugin.

Contributors

 *   [ Faiz ](https://profiles.wordpress.org/faizahmaddae/)

[Translate “APSearch — Arabic & Persian Search” into your language.](https://translate.wordpress.org/projects/wp-plugins/apsearch-arabic-persian-search)

### Interested in development?

[Browse the code](https://plugins.trac.wordpress.org/browser/apsearch-arabic-persian-search/),
check out the [SVN repository](https://plugins.svn.wordpress.org/apsearch-arabic-persian-search/),
or subscribe to the [development log](https://plugins.trac.wordpress.org/log/apsearch-arabic-persian-search/)
by [RSS](https://plugins.trac.wordpress.org/log/apsearch-arabic-persian-search/?limit=100&mode=stop_on_copy&format=rss).

## Changelog

#### 0.1.0

 * First release.

## Meta

 *  Version **0.1.0**
 *  Last updated **3 days ago**
 *  Active installations **Fewer than 10**
 *  WordPress version ** 6.0 or higher **
 *  Tested up to **7.1**
 *  PHP version ** 7.4 or higher **
 * Tags
 * [arabic](https://wordpress.org/plugins/tags/arabic/)[farsi](https://wordpress.org/plugins/tags/farsi/)
   [persian](https://wordpress.org/plugins/tags/persian/)[search](https://wordpress.org/plugins/tags/search/)
   [Urdu](https://wordpress.org/plugins/tags/urdu/)
 *  [Advanced View](https://wordpress.org/plugins/apsearch-arabic-persian-search/advanced/)

## Ratings

No reviews have been submitted yet.

[Your review](https://wordpress.org/support/plugin/apsearch-arabic-persian-search/reviews/#new-post)

[See all reviews](https://wordpress.org/support/plugin/apsearch-arabic-persian-search/reviews/)

## Contributors

 *   [ Faiz ](https://profiles.wordpress.org/faizahmaddae/)

## Support

Got something to say? Need help?

 [View support forum](https://wordpress.org/support/plugin/apsearch-arabic-persian-search/)