Title: HXSE — Code-First Search
Author: youheiokubo
Published: <strong>18. juni, 2026</strong>
Last modified: 24. juni, 2026

---

Søk i utvidelser

![](https://ps.w.org/hxse-code-first-search/assets/banner-772x250.png?rev=3576510)

![](https://ps.w.org/hxse-code-first-search/assets/icon-256x256.png?rev=3576510)

# HXSE — Code-First Search

 Av [youheiokubo](https://profiles.wordpress.org/youheiokubo/)

[Last ned](https://downloads.wordpress.org/plugin/hxse-code-first-search.1.7.0.zip)

 * [Detaljer](https://nb.wordpress.org/plugins/hxse-code-first-search/#description)
 * [Omtaler](https://nb.wordpress.org/plugins/hxse-code-first-search/#reviews)
 *  [Installering](https://nb.wordpress.org/plugins/hxse-code-first-search/#installation)
 * [Utvikling](https://nb.wordpress.org/plugins/hxse-code-first-search/#developers)

 [Brukerstøtte](https://wordpress.org/support/plugin/hxse-code-first-search/)

## Beskrivelse

HXSE — Code-First Search lets you define search filters with PHP arrays and output
them with a simple shortcode. No JavaScript configuration required. Powered by htmx
for seamless, no-reload filtering.

**Why HXSE?**

 * **Code-first** — Define everything in PHP arrays. Version-control friendly.
 * **No page reloads** — htmx handles all filtering and pagination seamlessly.
 * **AI-friendly** — Simple, consistent schema structure that AI agents can read
   and write.
 * **No dependencies** — htmx is bundled. No jQuery required.
 * **Fully customizable** — All styles use CSS custom properties (design tokens).
   Ships with `DESIGN.md` for a complete variable reference and customization examples.

**Filter Types**

 * `search` — Keyword search
 * `taxonomy` — Filter by taxonomy / category
 * `meta` — Filter by custom field value or range
 * `date` — Filter by year
 * `relation` — Filter by related post

**UI Types**

 * `select` — Dropdown
 * `radio` — Radio buttons
 * `checkbox` — Multiple selection
 * `range` — Min/max slider (for numeric meta fields)

**Pagination Modes**

 * `pager` — Numbered page links with count display
 * `loadmore` — «Load more» button

**Basic Usage**

Define a schema in your theme’s `functions.php`:

    ```
    add_filter( 'hxse_schemas', function( $schemas ) {
        $schemas['staff_search'] = [
            'post_type' => 'staff',
            'filters'   => [
                ['key' => 'keyword',    'type' => 'search',   'label' => 'キーワード'],
                ['key' => 'department', 'type' => 'taxonomy',  'label' => '部署',
                    'taxonomy' => 'department',
                    'ui'       => 'checkbox',
                ],
            ],
            'pagination' => [
                'mode'     => 'pager',
                'per_page' => 12,
            ],
            'template' => 'hxse-staff.php',
        ];
        return $schemas;
    } );
    ```

Then place the shortcode on any page:

    ```
    [hxse id="staff_search"]
    ```

### External Services

This plugin bundles htmx (https://htmx.org/) for handling AJAX requests without 
page reloads. htmx is included locally within the plugin and does not make any external
network requests. It is licensed under the BSD 2-Clause License.

 * htmx: https://htmx.org/
 * htmx License: https://github.com/bigskysoftware/htmx/blob/master/LICENSE

## Installasjon

 1. Upload the `hxse-code-first-search` folder to `/wp-content/plugins/`.
 2. Activate the plugin through the **Plugins** menu in WordPress.
 3. Add `hxse_schemas` filter to your theme’s `functions.php` or a custom plugin.
 4. Add `[hxse id="your_schema_id"]` shortcode to any page.

## Ofte stilte spørsmål

### Do I need to write JavaScript?

No. HXSE handles all htmx configuration automatically. You only write PHP to define
your filters.

### Can I use multiple search instances on one page?

Yes. Use the `prefix` option in `url_params` to avoid parameter conflicts.

### How do I customize the result template?

Create `hxse/your-template.php` in your theme directory and specify it in the schema’s`
template` key.

### Does it work with custom fields from ACF?

Yes. Use `type: 'meta'` with the appropriate `meta_key`.

## Vurderinger

Det er ingen omtaler av denne utvidelsen.

## Bidragsytere og utviklere

«HXSE — Code-First Search» er programvare med åpen kildekode. Følgende personer 
har bidratt til denne utvidelsen:

Bidragsytere

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

[Oversett «HXSE — Code-First Search» til ditt språk.](https://translate.wordpress.org/projects/wp-plugins/hxse-code-first-search)

### Interessert i utvikling?

[Bla gjennom koden](https://plugins.trac.wordpress.org/browser/hxse-code-first-search/),
sjekk ut [SVN-repositoriet](https://plugins.svn.wordpress.org/hxse-code-first-search/),
eller abonner på [utviklingsloggen](https://plugins.trac.wordpress.org/log/hxse-code-first-search/)
med [RSS](https://plugins.trac.wordpress.org/log/hxse-code-first-search/?limit=100&mode=stop_on_copy&format=rss).

## Endringslogg

#### 1.7.0

 * Added: Filter UI inside the iframe embed view — set `embed.show_filters` to let
   visitors filter within the embed (WordPress sources only)
 * Added: Automatic iframe height notification via postMessage — the embed reports
   its height to the parent on load, resize, and after htmx filtering
 * Added: postMessage target origins limited to `allowed_origins` (no wildcard) 
   for security
 * Added: htmx and hxse.js are inlined into the embed page when filters are enabled
 * Note: Parent pages must add a small receiver snippet to auto-resize the iframe(
   see manual)

#### 1.6.0

 * Added: iframe embed view — access `?hxse_embed={schema_id}` to output a list-
   only, self-contained HTML page for embedding on external landing pages
 * Added: `embed` schema key — `enabled`, `allowed_origins`, `title`, `per_page`
 * Added: Clickjacking protection — `Content-Security-Policy: frame-ancestors` restricts
   which domains may embed the view (same-origin only when no origins are specified)
 * Added: `includes/embed.php` — embed view rendering and frame security headers

#### 1.5.0

 * Added: Merge mode (`sources` key) — combine WordPress posts, RSS feeds, and APIs
   into a single chronological list
 * Added: `hxse_fetch_merged_data()` — fetches, normalizes, and merges multiple 
   data sources
 * Added: Source normalizers for wp_query / rss / api / xml into a common format(
   title, link, date, excerpt, source, raw)
 * Added: `orderby` / `order` / `limit` keys for merge mode sorting
 * Added: `map` key — maps API/XML response keys to the common format
 * Added: `templates/merged.php` — default template with source badges
 * Added: Merge list styles in hxse.css

#### 1.4.0

 * Added: `source: 'rss'` mode — fetches RSS 2.0 and Atom feeds and converts to 
   PHP array automatically
 * Added: `source: 'xml'` mode — fetches any XML and converts to PHP array using`
   xpath` key
 * Added: `hxse_parse_rss()` — RSS 2.0 / Atom parser
 * Added: `hxse_parse_xml()` — generic XML parser with xpath support
 * Added: `hxse_simplexml_to_array()` — recursive SimpleXMLElement to array converter
 * Improved: `hxse_do_remote_fetch()` now handles json / rss / xml based on `source`
   key
 * Improved: backward-compatible `hxse_do_api_request()` alias retained

#### 1.3.0

 * Added: Cache mapping (`hxse_cache_map` option) — tracks schema ID  filename relationships
   to detect orphaned files
 * Added: Orphan file detection — warns when JSON files exist without a corresponding
   schema
 * Added: «今すぐ更新» button — manually re-fetches API and regenerates JSON from
   admin UI (API schemas only)
 * Added: Bulk delete all cache button with total file size display
 * Added: Delete orphaned files button in admin UI
 * Improved: `hxse_delete_static_cache()` now also removes the mapping entry
 * Improved: `uninstall.php` now also deletes the `hxse_cache_map` option

#### 1.2.0

 * Added: `cache_mode: 'static'` — saves API responses as JSON files in `wp-content/
   hxse-cache/` (blocked from web access via .htaccess)
 * Added: `cache_file` key — custom filename for the static JSON cache
 * Added: `includes/cache.php` — cache directory management (init, load, save, delete)
 * Added: Admin UI — static JSON cache list with individual delete buttons (Settings
   HXSE)
 * Added: `uninstall.php` — removes `wp-content/hxse-cache/` directory on plugin
   uninstall
 * Improved: refactored `hxse_fetch_api_data()` to support both transient and static
   cache modes

#### 1.1.0

 * Added: `source: 'api'` mode — fetch data from external APIs (GAS, REST API, etc.)
   via PHP and render with a custom theme template
 * Added: `token` key — appended as `_token` GET parameter for simple API authentication
 * Added: `cache` key — transient-based caching for API responses (seconds, 0 to
   disable)

#### 1.0.2

 * Added: SECURITY.md — security policy, vulnerability reporting, and disclosure
   timeline
 * Added: MAINTENANCE.md — architecture overview, htmx update steps, and fork guide
 * Docs: Updated ai-reference.md — added design philosophy and maintainability section
   for AI agents

#### 1.0.1

 * Grid columns now controllable via `columns` schema key (CSS variable injection).
 * Table headers customizable via `table_columns` schema key.
 * Assets now loaded only on pages containing the [hxse] shortcode.
 * Refactored hxse.js: replaced var with const/let.
 * Taxonomy conditions now auto-detect slug vs term_id.
 * Fixed: escape the_title() in templates for XSS hardening.

#### 1.0.0

 * Initial release.
 * Filter types: search, taxonomy, meta, date, relation.
 * UI types: select, radio, checkbox, range.
 * URL parameter sync with browser history support.

## Meta

 *  Versjon **1.7.0**
 *  Sist oppdatert **5 dager siden**
 *  Aktive installasjoner **Færre enn 10**
 *  WordPress-versjon ** 6.0 eller nyere **
 *  Testet opp til **7.0**
 *  PHP-versjon ** 7.4 eller nyere **
 *  Språk
 * [English (US)](https://wordpress.org/plugins/hxse-code-first-search/)
 * Stikkord
 * [ajax](https://nb.wordpress.org/plugins/tags/ajax/)[custom post type](https://nb.wordpress.org/plugins/tags/custom-post-type/)
   [filter](https://nb.wordpress.org/plugins/tags/filter/)[search](https://nb.wordpress.org/plugins/tags/search/)
   [shortcode](https://nb.wordpress.org/plugins/tags/shortcode/)
 *  [Avansert visning](https://nb.wordpress.org/plugins/hxse-code-first-search/advanced/)

## Vurderinger

No reviews have been submitted yet.

[Your review](https://wordpress.org/support/plugin/hxse-code-first-search/reviews/#new-post)

[Se alle omtalene](https://wordpress.org/support/plugin/hxse-code-first-search/reviews/)

## Bidragsytere

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

## Brukerstøtte

Har du noe å si? Trenger du hjelp?

 [Vis brukerstøtteforumet](https://wordpress.org/support/plugin/hxse-code-first-search/)