# Useful hooks

### How to Enable This Filter

To enable these filters, **paste the code into the `functions.php` file of your active theme** (preferably a **child theme**) by following these steps:

* Go to **Appearance → Theme File Editor** in your WordPress dashboard,\
  or access the file via **FTP / file manager**.
* Open the `functions.php` file.
* Paste the code at the bottom of the file and save.

*Using a child theme is recommended to avoid losing changes during theme updates.*

### Disabling synchronization for selected products

To disable synchronization for selected products, add the following to the functions.php file of your theme:

```php
add_filter('ei_disable_sync_product_ids', 'my_ei_disable_sync_product_ids');
function my_ei_disable_sync_product_ids() {
    return array(111, 222, 333, 444);
}
```

Replace 111, 222, 333, 444 with the actual product IDs.

### Enabling synchronization only for selected products

```php
/**
 * Only sync products 101, 202 and 303.
 *
 * @param int[] $ids  Current list of IDs to sync (empty by default).
 * @return int[]      Filtered list of IDs to sync.
 */
add_filter( 'ei_enable_sync_product_ids', function( $ids ) {
    // Override any existing list—only these three will be synced.
    return array( 101, 202, 303 );
} );

```

```php
/**
 * Enabling synchronization only for products in a specific category.
 *
 * @param int[] $ids  Current list of product IDs to sync (empty by default).
 * @return int[]      Product IDs belonging to the 'featured-products' category.
 */
add_filter( 'ei_enable_sync_product_ids', function( $ids ) {
    // You can change 'featured-products' to any category slug
    $category_slug = 'featured-products';

    // This runs on every sync, so for large catalogs, consider caching the IDs
    $products_in_category = get_posts([
        'post_type'      => 'product',
        'posts_per_page' => -1,
        'fields'         => 'ids',
        'tax_query'      => [
            [
                'taxonomy' => 'product_cat',
                'field'    => 'slug',
                'terms'    => $category_slug,
            ],
        ],
    ]);

    return $products_in_category;
} );

```

### **Allowing HTML and images in product descriptions**

To disable description sanitization and include all images and HTML formatting from the source site, add the following to the functions.php file of your theme:

```php
add_filter('cegg_description_sanitization', '__return_false');
```

### Import domain as brand taxonomy

For the Rehub theme only, to import the domain as the "brand" taxonomy, add the following to your functions.php file:

```php
add_filter('ie_import_brand', '__return_false');
add_filter('ie_import_store', '__return_true');
```

### Custom parameters for scraping services

```php
// Add country_code parameter to ScraperAPI requests
add_filter('ei_parse_url_scraperapi', 'my_ei_parse_url_scraperapi', 10, 1);
function my_ei_parse_url_scraperapi($url) {
    return add_query_arg('country_code', 'de', $url);
}

// Add country parameter to ScrapingDog requests
add_filter('ei_parse_url_scrapingdog', 'my_ei_parse_url_scrapingdog_country', 10, 1);
function my_ei_parse_url_scrapingdog_country($url) {
    return add_query_arg('country', 'de', $url);
}

// Add dynamic parameter to ScrapingDog requests
add_filter('ei_parse_url_scrapingdog', 'my_ei_parse_url_scrapingdog_dynamic', 10, 1);
function my_ei_parse_url_scrapingdog_dynamic($url) {
    return add_query_arg('dynamic', 'true', $url);
}

// Add premium parameter to ScrapingDog requests
add_filter('ei_parse_url_scrapingdog', 'my_ei_parse_url_scrapingdog_premium', 10, 1);
function my_ei_parse_url_scrapingdog_premium($url) {
    return add_query_arg('premium', 'yes', $url);
}
```


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://ei-docs.keywordrush.com/for-developers/hooks.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
