Skip to content

Commit 78fefd5

Browse files
committed
Merge branch 'develop' into trunk
2 parents e480c3d + 005628c commit 78fefd5

103 files changed

Lines changed: 7659 additions & 3369 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.github/workflows/playwright.yml

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -94,11 +94,21 @@ jobs:
9494
run: npm run build
9595

9696
- name: Set up database
97-
run: npm run e2e:setup -- --wp-version=${{ matrix.core.version }} --wc-version=${{ matrix.core.wcVersion }} --acf-pro-license='${{ secrets.ACF_PRO_LICENSE_KEY }}'
97+
run: |
98+
if [ "${{ matrix.testGroup }}" == "@paidPlugins" ]; then
99+
npm run e2e:setup -- --wp-version=${{ matrix.core.version }} --wc-version=${{ matrix.core.wcVersion }} --acf-pro-license='${{ secrets.ACF_PRO_LICENSE_KEY }}'
100+
else
101+
npm run e2e:setup -- --wp-version=${{ matrix.core.version }} --wc-version=${{ matrix.core.wcVersion }}
102+
fi
98103
if: matrix.esVersion != 'EP.io'
99104

100105
- name: Set up database (EP.io)
101-
run: npm run e2e:setup -- --ep-host=${{ secrets.EPIO_HOST }} --ep-credentials='${{ secrets.EPIO_SHIELD }}' --ep-index-prefix=${{ secrets.EPIO_INDEX_PREFIX }} --wp-version=${{ matrix.core.version }} --wc-version=${{ matrix.core.wcVersion }} --acf-pro-license='${{ secrets.ACF_PRO_LICENSE_KEY }}'
106+
run: |
107+
if [ "${{ matrix.testGroup }}" == "@paidPlugins" ]; then
108+
npm run e2e:setup -- --ep-host=${{ secrets.EPIO_HOST }} --ep-credentials='${{ secrets.EPIO_SHIELD }}' --ep-index-prefix=${{ secrets.EPIO_INDEX_PREFIX }} --wp-version=${{ matrix.core.version }} --wc-version=${{ matrix.core.wcVersion }} --acf-pro-license='${{ secrets.ACF_PRO_LICENSE_KEY }}'
109+
else
110+
npm run e2e:setup -- --ep-host=${{ secrets.EPIO_HOST }} --ep-credentials='${{ secrets.EPIO_SHIELD }}' --ep-index-prefix=${{ secrets.EPIO_INDEX_PREFIX }} --wp-version=${{ matrix.core.version }} --wc-version=${{ matrix.core.wcVersion }}
111+
fi
102112
if: matrix.esVersion == 'EP.io'
103113

104114
- name: Run Playwright tests

.gitignore

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,3 +19,5 @@ elasticpress.zip
1919
/tests/e2e/playwright-report/
2020
/tests/e2e/blob-report/
2121
/tests/e2e/playwright/.cache/
22+
23+
Makefile

.wp-env.json

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,10 +41,13 @@
4141
"wp-content/plugins/show-comments-and-terms.php": "./tests/e2e/src/wordpress-files/test-plugins/show-comments-and-terms.php",
4242
"wp-content/plugins/sync-error.php": "./tests/e2e/src/wordpress-files/test-plugins/sync-error.php",
4343
"wp-content/plugins/sync-error-specific-post.php": "./tests/e2e/src/wordpress-files/test-plugins/sync-error-specific-post.php",
44+
"wp-content/plugins/temporarily-disable-autosuggest.php": "./tests/e2e/src/wordpress-files/test-plugins/temporarily-disable-autosuggest.php",
4445
"wp-content/plugins/unsupported-server-software.php": "./tests/e2e/src/wordpress-files/test-plugins/unsupported-server-software.php",
4546
"wp-content/plugins/unsupported-elasticsearch-version.php": "./tests/e2e/src/wordpress-files/test-plugins/unsupported-elasticsearch-version.php",
4647
"wp-content/plugins/multiple-required-features.php": "./tests/e2e/src/wordpress-files/test-plugins/multiple-required-features.php",
47-
"wp-content/uploads/content-example.xml": "./tests/e2e/src/wordpress-files/test-docs/content-example.xml"
48+
"wp-content/uploads/content-example.xml": "./tests/e2e/src/wordpress-files/test-docs/content-example.xml",
49+
"wp-content/plugins/echo-shortcode.php": "./tests/e2e/src/wordpress-files/test-plugins/echo-shortcode.php",
50+
"wp-content/plugins/simulate-setting-dependency.php": "./tests/e2e/src/wordpress-files/test-plugins/simulate-setting-dependency.php"
4851
}
4952
}
5053
}

CHANGELOG.md

Lines changed: 40 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,42 @@ All notable changes to this project will be documented in this file, per [the Ke
1414
### Developer
1515
-->
1616

17+
## [5.3.3] - 2026-05-07
18+
19+
### Added
20+
* Numbered pagination option for Instant Results. Props [@ZacharyRener](https://github.com/ZacharyRener) via [#4274](https://github.com/10up/ElasticPress/pull/4274).
21+
* New elasticpress_general_ep_screens filter. Props [@felipeelia](https://github.com/felipeelia) via [#4256](https://github.com/10up/ElasticPress/pull/4256).
22+
* New ep_feature_requirements_status_* filters and a new "Temporarily disabled" feature status (in code). Props [@felipeelia](https://github.com/felipeelia) via [#4265](https://github.com/10up/ElasticPress/pull/4265).
23+
24+
### Changed
25+
* Optimize mb_strlen calls during sync process. Props [@kasparsd](https://github.com/kasparsd) via [#4304](https://github.com/10up/ElasticPress/pull/4304).
26+
* Saving feature settings now reflects feature dependencies without refreshing the page. Props [@ZacharyRener](https://github.com/ZacharyRener) via [#4275](https://github.com/10up/ElasticPress/pull/4275).
27+
28+
### Fixed
29+
* Keep the sync running when code outputs directly in the post content. Props [@burhandodhy](https://github.com/burhandodhy), [@tomjn](https://github.com/tomjn), and [@felipeelia](https://github.com/felipeelia) via [#4266](https://github.com/10up/ElasticPress/pull/4266).
30+
* Prevent saving Custom Results while posts are loading. Props [@burhandodhy](https://github.com/burhandodhy) via [#4260](https://github.com/10up/ElasticPress/pull/4260).
31+
* Update label for bulk request timeout in ElasticPress status report. Props [@burhandodhy](https://github.com/burhandodhy) via [#4259](https://github.com/10up/ElasticPress/pull/4259).
32+
* Undefined array key warnings in Weighting.php. Props [@burhandodhy](https://github.com/burhandodhy) and [@BWBama85](https://github.com/BWBama85) via [#4270](https://github.com/10up/ElasticPress/pull/4270).
33+
* Ensure the Sync creates the Instant Results templates for all the sites. Props [@burhandodhy](https://github.com/burhandodhy) and [@anjulahettige](https://github.com/anjulahettige) via [#4258](https://github.com/10up/ElasticPress/pull/4258).
34+
* Ensure that WordPress caches the meta and term queries. Props [@burhandodhy](https://github.com/burhandodhy) and [@maciejmackowiak](https://github.com/maciejmackowiak) via [#4268](https://github.com/10up/ElasticPress/pull/4268).
35+
* An issue where posts were not returned correctly when the search term contained accented characters. Props [@burhandodhy](https://github.com/burhandodhy) via [#4263](https://github.com/10up/ElasticPress/pull/4263).
36+
* Prevent fatal error in Instant Results facets when `ep_facet_include_taxonomies` returns non-WP_Taxonomy values. Props [@laraib15](https://github.com/laraib15) via [#4255](https://github.com/10up/ElasticPress/pull/4255).
37+
* Instant Results displayed special characters as HTML encoded text. Props [@burhandodhy](https://github.com/burhandodhy) and [@wparslans](https://github.com/wparslans) via [#4276](https://github.com/10up/ElasticPress/pull/4276).
38+
* Error when trying to use queried object that doesn't exist. Props [@tomjn](https://github.com/tomjn) and [@ZacharyRener](https://github.com/ZacharyRener) via [#4285](https://github.com/10up/ElasticPress/pull/4285).
39+
* Only consider a feature active if not disabled by code. Props [@felipeelia](https://github.com/felipeelia) via [#4272](https://github.com/10up/ElasticPress/pull/4272).
40+
* Several typos. Props [@szepeviktor](https://github.com/szepeviktor) and [@felipeelia](https://github.com/felipeelia) via [#4248](https://github.com/10up/ElasticPress/pull/4248).
41+
* Query count in the basic status admin bar. Props [@Sidsector9](https://github.com/Sidsector9) via [#4309](https://github.com/10up/ElasticPress/pull/4309).
42+
* Settings notice layout on the settings page during sync in WordPress 7.0. Props [@burhandodhy](https://github.com/burhandodhy) via [#4310](https://github.com/10up/ElasticPress/pull/4310).
43+
44+
### Security
45+
* Updated Node.js dependencies (including a webpack override) to address npm audit findings. Props [@felipeelia](https://github.com/felipeelia) via [#4307](https://github.com/10up/ElasticPress/pull/4307).
46+
47+
### Developer
48+
* Ensure `ep_{$indexable->slug}_sync_kill` properly prevents object indexing during sync and post updates. Props [@burhandodhy](https://github.com/burhandodhy), [@felipeelia](https://github.com/felipeelia), and [@matthijsch](https://github.com/matthijsch) via [#4282](https://github.com/10up/ElasticPress/pull/4282).
49+
* Gracefully handle incorrect return types from `ep_admin_notices` filter callbacks. Props [@qudwill](https://github.com/qudwill), [@felipeelia](https://github.com/felipeelia), and [@Sidsector9](https://github.com/Sidsector9) via [#4281](https://github.com/10up/ElasticPress/pull/4281).
50+
* Webpack configuration option for JavaScript and CSS source maps (editor debugging). Props [@fiftin](https://github.com/fiftin) and [@ZacharyRener](https://github.com/ZacharyRener) via [#4247](https://github.com/10up/ElasticPress/pull/4247) and [#4288](https://github.com/10up/ElasticPress/pull/4288).
51+
* Fix e2e tests. Props [@felipeelia](https://github.com/felipeelia) via [#4262](https://github.com/10up/ElasticPress/pull/4262).
52+
1753
## [5.3.2.2] - 2026-03-26
1854

1955
### Fixed
@@ -629,7 +665,7 @@ ElasticPress 4.5.0 release highlights:
629665
- Facets styles not enqueued more than once. Props [@felipeelia](https://github.com/felipeelia) and [@MediaMaquina](https://github.com/MediaMaquina) via [#3306](https://github.com/10up/ElasticPress/pull/3306).
630666
- Duplicate terms listed in Instant Results facets. Props [@felipeelia](https://github.com/felipeelia) via [#3335](https://github.com/10up/ElasticPress/pull/3335).
631667
- Not setting the post context when indexing a post. Props [@tomjn](https://github.com/tomjn) via [#3333](https://github.com/10up/ElasticPress/pull/3333).
632-
- Some utilitary methods in the Command class treated as WP-CLI Commands. Props [@burhandodhy](https://github.com/burhandodhy) and [@felipeelia](https://github.com/felipeelia) via [#3320](https://github.com/10up/ElasticPress/pull/3320).
668+
- Some utility methods in the Command class treated as WP-CLI Commands. Props [@burhandodhy](https://github.com/burhandodhy) and [@felipeelia](https://github.com/felipeelia) via [#3320](https://github.com/10up/ElasticPress/pull/3320).
633669
- Make the "Failed Queries" notice dismissible. Props [@oscarssanchez](https://github.com/oscarssanchez) and [@felipeelia](https://github.com/felipeelia) via [#3348](https://github.com/10up/ElasticPress/pull/3348).
634670
- Undefined index `'elasticpress'` in the Status Report page. Props [@MARQAS](https://github.com/MARQAS) via [#3374](https://github.com/10up/ElasticPress/pull/3374).
635671
- Undefined array key `'displayCount'` error for facet. Props [@burhandodhy](https://github.com/burhandodhy) via [#3373](https://github.com/10up/ElasticPress/pull/3373).
@@ -2107,7 +2143,7 @@ This is a bug fix release with some filter additions.
21072143
### Added
21082144
- Blog id to `ep_index_name` filter. Props [@kovshenin](https://github.com/kovshenin)
21092145
- Support post caching in search
2110-
- Recursive term indexing for heirarchal taxonomies. Props [@tuanmh](https://github.com/tuanmh)
2146+
- Recursive term indexing for hierarchical taxonomies. Props [@tuanmh](https://github.com/tuanmh)
21112147
- Enable indexing of attachments
21122148
- Support fallback hosts in case main EP host is unavailable. Props [@chriswiegman](https://github.com/chriswiegman)
21132149
- `ep_retrieve_the_post` filter to support relevancy score manipulation. Props [@matthewspencer](https://github.com/matthewspencer)
@@ -2206,7 +2242,7 @@ This is a bug fix release with some filter additions.
22062242
- _boost from mapping. _boost is deprecated by Elasticsearch.
22072243

22082244
### Fixed
2209-
- We don't want to add the like_text query unless we have a non empty search string. This mimcs the behavior of MySQL or WP which will return everything if s is empty.
2245+
- We don't want to add the like_text query unless we have a non empty search string. This mimics the behavior of MySQL or WP which will return everything if s is empty.
22102246

22112247
## [1.1] - 2014-10-27
22122248
### Added
@@ -2319,6 +2355,7 @@ This is a bug fix release with some filter additions.
23192355
- Initial plugin release
23202356

23212357
[Unreleased]: https://github.com/10up/ElasticPress/compare/trunk...develop
2358+
[5.3.3]: https://github.com/10up/ElasticPress/compare/5.3.2.2...5.3.3
23222359
[5.3.2.2]: https://github.com/10up/ElasticPress/compare/5.3.2.1...5.3.2.2
23232360
[5.3.2.1]: https://github.com/10up/ElasticPress/compare/5.3.2...5.3.2.1
23242361
[5.3.2]: https://github.com/10up/ElasticPress/compare/5.3.1...5.3.2

CREDITS.md

Lines changed: 21 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -88,7 +88,6 @@ Thank you to all the people who have already contributed to this repository via
8888
[Gassan Gousseinov (@gassan)](https://github.com/gassan),
8989
[Evan Mattson (@aaemnnosttv)](https://github.com/aaemnnosttv),
9090
[Helen Hou-Sandi (@helen)](https://github.com/helen),
91-
[Peter Sorensen (@psorensen)](https://github.com/psorensen),
9291
[columbian-chris (@columbian-chris)](https://github.com/columbian-chris),
9392
[John Spellman (@jspellman814)](https://github.com/jspellman814),
9493
[Mindaugas Budreika (@mch0lic)](https://github.com/mch0lic),
@@ -262,8 +261,28 @@ Thank you to all the people who have already contributed to this repository via
262261
[@DarioBF](https://github.com/DarioBF),
263262
[@ognjanovic](https://github.com/ognjanovic),
264263
[Maciej Maćkowiak (@maciejmackowiak)](https://github.com/maciejmackowiak),
264+
[Laraib Tahir (@laraib15)](https://github.com/laraib15),
265+
[@wparslans](https://github.com/wparslans),
266+
[Brent Wilson (@BWBama85)](https://github.com/BWBama85),
267+
[@qazaqstan2025](https://github.com/qazaqstan2025),
268+
[Allen Moore (@allenmoore)](https://github.com/allenmoore),
269+
[Christoph Bratschi (@cbratschi)](https://github.com/cbratschi),
270+
[Chris Van Patten (@chrisvanpatten)](https://github.com/chrisvanpatten),
271+
[Chris (@crebacz)](https://github.com/crebacz),
272+
[Denis Gukov (@fiftin)](https://github.com/fiftin),
273+
[Hugo Solar (@hugosolar)](https://github.com/hugosolar),
274+
[@jaisgit](https://github.com/jaisgit),
275+
[JG Media (@jgmedialtd)](https://github.com/jgmedialtd),
276+
[Kaspars Dambis (@kasparsd)](https://github.com/kasparsd),
277+
[Matthijs Hasenpflug (@matthijsch)](https://github.com/matthijsch),
278+
[Max (@Maxdw)](https://github.com/Maxdw),
279+
[Patrick Johanneson (@pjohanneson)](https://github.com/pjohanneson),
280+
[Vladimir (@qudwill)](https://github.com/qudwill),
281+
[Ray Lee (@ray-lee)](https://github.com/ray-lee),
282+
[Christian Janbjer (@slaxxarn)](https://github.com/slaxxarn),
283+
[@superdummy](https://github.com/superdummy),
265284
and
266-
[@qazaqstan2025](https://github.com/qazaqstan2025).
285+
[@tomdxw](https://github.com/tomdxw).
267286

268287
## Libraries
269288

assets/css/instant-results/pagination-button.css

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,4 +3,12 @@
33
&[disabled] {
44
visibility: hidden;
55
}
6+
7+
.is-numbered & {
8+
9+
&.is-current {
10+
font-weight: 600;
11+
}
12+
}
613
}
14+

assets/css/instant-results/pagination.css

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,20 @@
44
grid-template-columns: 1fr 1fr 1fr;
55
margin-top: auto;
66
text-align: center;
7+
8+
&.is-numbered {
9+
display: block;
10+
11+
& .ep-search-pagination__list {
12+
display: flex;
13+
flex-wrap: wrap;
14+
gap: 8px;
15+
justify-content: center;
16+
list-style: none;
17+
margin: 8px 0 0;
18+
padding: 0;
19+
}
20+
}
721
}
822

923
.rtl .ep-search-pagination {

assets/js/api-search/index.js

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -198,6 +198,16 @@ export const ApiSearchProvider = ({
198198
dispatch({ type: 'PREVIOUS_PAGE' });
199199
};
200200

201+
/**
202+
* Set the result offset.
203+
*
204+
* @param {number} offset Result offset.
205+
* @returns {void}
206+
*/
207+
const setOffset = (offset) => {
208+
dispatch({ type: 'SET_OFFSET', offset });
209+
};
210+
201211
/**
202212
* Set search args from popped history state.
203213
*
@@ -366,6 +376,7 @@ export const ApiSearchProvider = ({
366376
search,
367377
searchFor,
368378
setResults,
379+
setOffset,
369380
nextPage,
370381
previousPage,
371382
totalResults,

assets/js/api-search/src/reducer.js

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -89,6 +89,11 @@ export default (state, action) => {
8989
newState.args.offset = Math.max(newState.args.offset - newState.args.per_page, 0);
9090
break;
9191
}
92+
case 'SET_OFFSET': {
93+
const offset = Number.isFinite(action.offset) ? action.offset : 0;
94+
newState.args.offset = Math.max(offset, 0);
95+
break;
96+
}
9297
case 'POP_STATE': {
9398
const { isOn, args } = action.args;
9499

assets/js/features/components/control.js

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -62,9 +62,8 @@ const Control = ({
6262
* Get missing required features.
6363
*/
6464
const missingRequiredFeatures = requiredFeaturesList
65-
.filter((featureSlug) => settings[featureSlug]?.active !== true)
6665
.map((featureSlug) => getFeature(featureSlug))
67-
.filter(Boolean);
66+
.filter((feature) => !feature.isAvailable || settings[feature.slug]?.active !== true);
6867

6968
/**
7069
* Help text formatted to allow safe HTML.

0 commit comments

Comments
 (0)