Skip to content

Excerpt block: remove filter hack, use excerpt_length - #69090

Open
swissspidy wants to merge 13 commits into
trunkfrom
try/53570-excerpt
Open

swissspidy wants to merge 13 commits into
trunkfrom
try/53570-excerpt

Conversation

@swissspidy

Copy link
Copy Markdown
Member

What?

Closes #53570

Removes hacky PHP filter implementation that affects way more than just the REST API.

Uses the recommended excerpt_length parameter that's available since WordPress 6.6

Why?

Stop affecting unrelated workflows, fix bugs, write better code :)

How?

Uses getEntityRecord instead of useEntityProp so that custom query params can be passed.

Testing Instructions

  1. Write long excerpt
  2. Insert excerpt block
  3. Change length param and then deselect the block
  4. See that the length changes as expected

Testing Instructions for Keyboard

n/a

Screenshots or screencast

n/a

Before After

@swissspidy swissspidy added [Type] Bug An existing feature does not function as intended [Block] Post Excerpt Affects the Post Excerpt Block labels Feb 7, 2025
@swissspidy
swissspidy requested a review from Mamaduka February 7, 2025 09:39
@github-actions

github-actions Bot commented Feb 7, 2025 •

Copy link
Copy Markdown

The following accounts have interacted with this PR and/or linked issues. I will continue to update these lists as activity occurs. You can also manually ask me to refresh this list by adding the props-bot label.

Unlinked Accounts

The following contributors have not linked their GitHub and WordPress.org accounts: @claude.

Contributors, please read how to link your accounts to ensure your work is properly credited in WordPress releases.

If you're merging code through a pull request on GitHub, copy and paste the following into the bottom of the merge commit message.

Unlinked contributors: claude.

Co-authored-by: swissspidy <swissspidy@git.wordpress.org>
Co-authored-by: Mamaduka <mamaduka@git.wordpress.org>
Co-authored-by: adamsilverstein <adamsilverstein@git.wordpress.org>
Co-authored-by: t-hamano <wildworks@git.wordpress.org>
Co-authored-by: talldan <talldanwp@git.wordpress.org>
Co-authored-by: aduth <aduth@git.wordpress.org>
Co-authored-by: hellofromtonya <hellofromtonya@git.wordpress.org>
Co-authored-by: anton-vlasenko <antonvlasenko@git.wordpress.org>
Co-authored-by: apeatling <apeatling@git.wordpress.org>
Co-authored-by: colorful-tones <colorful-tones@git.wordpress.org>
Co-authored-by: Rajinsharwar <rajinsharwar@git.wordpress.org>

To understand the WordPress project's expectations around crediting contributors, please review the Contributor Attribution page in the Core Handbook.

@github-actions

This comment was marked as resolved.

Comment thread packages/block-library/src/post-excerpt/edit.jsx
Comment on lines +58 to +68
const record = select( coreStore ).getEntityRecord(
'postType',
postType,
postId,
{ excerpt_length: excerptLength }
);
const editedRecord = select( coreStore ).getEditedEntityRecord(
'postType',
postType,
postId
);

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I still need to test my theory here, but have you checked this change with Query blocks? I think because of the new argument; selectors won't be able to use data from getEntityRecrods, which will trigger separate HTTP requests.

Not a big issue in separation, but it can degrade performance inside the loop.

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

No I haven't tested this with the Query block. But a few extra HTTP requests in the editor seem unavoidable this way (frontend is not affected). And I am not here to fundamentally change how selectors or the Query block works, that would be way out of scope for this PR. But if there's any quick wins or so, I'm eager to learn more.

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

And I am not here to fundamentally change how selectors or the Query block works, that would be way out of scope for this PR.

I wasn't suggesting that. I know it's not in this scope.

I'll try experimenting with it, but I can't promise anything until early next week.

P.S. We should simplify the data selector "orchestration" for consumers. Currently, improving performance for those requires familiarity with internals. It's okay for core but could be challenging for 3rd party consumers.

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Confirmed. Adding a new excerpt_length parameter triggers an additional request for each Excerpt block, which is not ideal, since it will increase editor loading time, but I guess it can't be avoided entirely.

Maybe we could mitigate this a bit by only applying the excerpt_length filter when excerptLength !== DEFAULT_EXCERPT_LENGTH.

@github-actions

This comment was marked as resolved.

@swissspidy

This comment was marked as resolved.

@swissspidy
swissspidy requested a review from Mamaduka April 14, 2025 08:51
@Mamaduka

Mamaduka commented May 1, 2025

Copy link
Copy Markdown
Member

This still requires additional testing to avoid regressions, but it generally looks good.

Some notes/questions:

  • I'm guessing we still need this client-side "trimmer" to handle raw edits.
  • I think there's some room for improvement to avoid unnecessary requests, but it can be done as a follow-up.

cc @t-hamano

@t-hamano

t-hamano commented Jun 6, 2025

Copy link
Copy Markdown
Contributor

I have confirmed that this PR works correctly in the Japanese locale, i.e. when the word count type is characters_including_spaces.

Here's what I noticed:

  • A REST API request is triggered every time I move the slide.
  • The behavior when a block is selected is different. In the trunk branch, the excerpt always shows 100 words, which is the maximum value that can be set on the slider. In this PR, the number of words in the excerpt changes based on the "Max number of words" setting.
  • There seems to be a mismatch between the "Max number of words" setting and the actual excerpt length rendered in the editor. For example, moving the slider quickly, saving the post, or reloading the browser will change the number of characters in the rendered excerpt.

See the video below:

84faaead3a3158b8fc85221b4292ec9d.mp4

@talldan

talldan commented Jul 17, 2025

Copy link
Copy Markdown
Contributor

A REST API request is triggered every time I move the slide.

This looks to be a problem that still needs to be addressed. As the slider is dragged, lots of HTTP requests are triggered. Setting the excerpt length attribute could possibly be debounced. The RangeControl docs seem to specifically mention not to do that, but I'm not sure what the alternative is.

There also seems to be a bug, in my testing after a while the slider stops having any effect. I'm not sure why, it might be an issue with entity caching when using query params. To repro keep changing the value between something high (90) and something low (10) and observe that after a while only one of the values sticks.

@t-hamano

Copy link
Copy Markdown
Contributor

What if we just make a single API request using 100 as the value for the expert_length option, since that's the maximum value allowed in the slider UI?

I think the excerpt that is rendered inside the block could be calculated client-side only.

const { rawExcerpt, renderedExcerpt, isProtected } = useSelect(
( select ) => {
	const record = select( coreStore ).getEntityRecord(
		'postType',
		postType,
		postId,
		{ excerpt_length: 100 }
	);
	const editedRecord = select( coreStore ).getEditedEntityRecord(
		'postType',
		postType,
		postId
	);

	return {
		rawExcerpt:
			record && editedRecord ? editedRecord.excerpt : null,
		renderedExcerpt: record?.excerpt.rendered,
		isProtected: record?.excerpt.protected,
	};
},
[ postType, postId ]
);

// Based on rawExcerpt, renderedExcerpt, and excerptLength attribute, calculate the excerpt to be rendered in the block, client-side only.
// ...

@swissspidy

Copy link
Copy Markdown
Member Author

Trying to do the excerpt client-side would just reintroduce the same issues that were originally tried to solve, duplicate logic for multilingual cases, and most importantly would not use the server-side excerpt filters for an actual WYSIWYG experience. So 👎 from me.


There also seems to be a bug, in my testing after a while the slider stops having any effect. I'm not sure why, it might be an issue with entity caching when using query params.

Interesting. That would indeed indicate an issue at the entity caching layer. I don't think this can be solved as part of this PR. Dragging back and forth tons of times sounds like an edge case too.

@t-hamano

Copy link
Copy Markdown
Contributor

Dragging back and forth tons of times sounds like an edge case too.

Even normal dragging can cause problems. See the video below: Even when dragging the slider from the minimum of 10 to the maximum of 100 at normal speed, there is still a mismatch between the set value and the actual length of the excerpt. This doesn't seem acceptable to me.

8dc2aac6fcc6776a41641d4b81706920.mp4

I was wondering if there is any good idea to solve this problem while still reusing the server side logic on the client side.

@adamsilverstein

Copy link
Copy Markdown
Member

Setting the excerpt length attribute could possibly be debounced. The RangeControl docs seem to specifically mention not to do that, but I'm not sure what the alternative is.

I tried this in #70790 and discovered that while debouncing fixes the excessive requests, the slider becomes visually unresponsive. Dragging the slider, it only pops into position after I stop dragging.

Interesting. That would indeed indicate an issue at the entity caching layer. I don't think this can be solved as part of this PR. Dragging back and forth tons of times sounds like an edge case too.

even dragging once causes a huge amount of requests that seems excessive. In this screencast I drag the slider once and see almost 160 requests:

screencast.2025-07-18.11-03-05.mp4

@adamsilverstein

Copy link
Copy Markdown
Member

I gave debouncing another try in #70793, aiming to only debouce the excerpt updating not the entire handler. This worked much better - the UI is responsive and a single drag results in requests after the drag. server requests are reduced by an order of magnitude 16 vs 160).

screencast.2025-07-18.11-15-21.mp4

wdyt @swissspidy?

@swissspidy

Copy link
Copy Markdown
Member Author

That looks smoother indeed! 👍

claude added 2 commits August 20, 2026 10:02
Resolve conflicts in the Post Excerpt block:

- edit.js: keep the `getEntityRecord` based data flow that passes the
  `excerpt_length` REST parameter, on top of trunk's import layout and
  `useDeprecatedTextAlign` refactor.
- index.php: keep `block_core_post_excerpt_excerpt_length()`, which the
  render callback now uses, and drop the global `is_admin()` filter that
  the REST parameter makes unnecessary.
Dragging the "Max number of words" range control changed the
`excerpt_length` query parameter on every intermediate value, firing a
REST request for each step.

Feed the request a debounced copy of the attribute instead. The range
control and the client-side trimming keep reading the attribute
directly, so dragging stays responsive while requests are only made once
the value settles.
Copilot AI balanced review requested due to automatic review settings August 20, 2026 10:26

This comment was marked as resolved.

@github-actions github-actions Bot added the [Package] Block library /packages/block-library label Aug 20, 2026
@t-hamano
t-hamano requested a balanced review from Copilot August 24, 2026 12:55

This comment was marked as resolved.

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 2 out of 2 changed files in this pull request and generated 2 comments.

Comment on lines +69 to +74
const record = select( coreStore ).getEntityRecord(
'postType',
postType,
postId,
{ excerpt_length: requestedExcerptLength }
);

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

is this code path newly exposed due to the PR changes?

Comment thread packages/block-library/src/post-excerpt/edit.js Outdated
getEntityRecord caches a single record by ID and context and ignores the
rest of the query, so every requested excerpt_length shared one cache
entry: the response for one length was displayed for another, and a
length that had already been resolved was never requested again, leaving
the block showing whichever length came back last. Request the generated
excerpts outside that cache and key them by their request instead.

Also skip the request entirely for posts that have a stored excerpt.
wp_trim_excerpt() returns a stored excerpt untouched and applies the
filter only while generating one from the content, so excerpt_length
cannot change the response for those posts and the record the editor
already loaded can be reused.
@github-actions

github-actions Bot commented Sep 2, 2026 •

Copy link
Copy Markdown

🤖 PR meta 🤖

📦 Bundle size

Size Change: +384 B (0%)

Total Size: 8.21 MB

📦 View Changed
Filename Size Change
build/scripts/block-library/index.min.js 365 kB +384 B (+0.11%)

f0373eb Run

⚡ Performance

Show the results

Client side metrics exclude the server response time.

front-end-block-theme

Metric 2da8ed6 trunk % Change
timeToFirstByte 53.5 ms +6.92% -3.83% 52.8 ms +7.67% -3.41% 1.33%
largestContentfulPaint 88 ms +6.82% -0% 88 ms +9.09% -4.55% 0%
lcpMinusTtfb 36.05 ms +10.68% -5.83% 36.25 ms +4.69% -10.76% -0.55%
wpBeforeTemplate 27.11 ms +12.65% -1.88% 27.14 ms +11.05% -2.17% -0.11%
wpTemplate 22.1 ms +5.93% -5.48% 21.34 ms +5.9% -4.92% 3.56%
wpTotal 49.7 ms +7.04% -3.86% 48.99 ms +8.06% -3.18% 1.45%
wpMemoryUsage 7.59 MB +0% -0% 7.55 MB +0% -0% 0.45%
wpDbQueries 17 +0% -0% 17 +0% -0% 0%

front-end-classic-theme

Metric 2da8ed6 trunk % Change
timeToFirstByte 44.45 ms +5.51% -3.49% 42.35 ms +4.13% -8.74% 4.96%
largestContentfulPaint 96 ms +4.17% -2.08% 92 ms +2.17% -4.35% 4.35%
lcpMinusTtfb 51.55 ms +2.42% -5.72% 48.55 ms +3.71% -2.37% 6.18%
wpBeforeTemplate 23.8 ms +9.5% -1.68% 22.59 ms +5.27% -12.39% 5.36%
wpTemplate 16.7 ms +5.21% -4.79% 15.98 ms +8.76% -8.95% 4.51%
wpTotal 41.4 ms +5% -3.74% 39.45 ms +3.88% -9.61% 4.94%
wpMemoryUsage 6.21 MB +0% -0% 6.17 MB +0% -0% 0.57%
wpDbQueries 14 +0% -0% 14 +0% -0% 0%

media-processing

Metric 2da8ed6 trunk % Change
mediaProcessingJpeg 354.03 ms +0.62% -1.58% 339.87 ms +1.36% -2.06% 4.17%
mediaProcessingAvif 5305.64 ms +0.16% -0.66% 5079.93 ms +3.02% -2.15% 4.44%
mediaProcessingJpegToAvif 3696.79 ms +0.53% -0.31% 3506.81 ms +3.6% -0.87% 5.42%

media-upload

Metric 2da8ed6 trunk % Change
jpegUploadProcessing 1463.85 ms +0.93% -2.34% 1405.26 ms +0.44% -1.07% 4.17%
pngUploadProcessing 217.62 ms +4.81% -5.38% 176.41 ms +2.24% -2.75% 23.36%
largeJpegUploadProcessing 1419.27 ms +0.74% -0.64% 1397.58 ms +0.54% -0.2% 1.55%
multipleImageUploadProcessing 1506.71 ms +0.46% -0.3% 1464.74 ms +0.3% -0.23% 2.87%

post-editor

Metric 2da8ed6 trunk % Change
serverResponse 487.71 ms +6.77% -2.52% 491.97 ms +2.79% -1.93% -0.87%
firstPaint 234.55 ms +3.51% -7.53% 243.47 ms +14.08% -11.09% -3.66%
domContentLoaded 1096.02 ms +1.12% -0.83% 1101.87 ms +0.34% -0.42% -0.53%
loaded 1097.47 ms +1.13% -0.82% 1103.52 ms +0.3% -0.46% -0.55%
firstContentfulPaint 454.98 ms +1.13% -0.52% 444.17 ms +1.6% -1.74% 2.43%
firstBlock 3267.08 ms +0.65% -0.91% 3260.61 ms +0.42% -0.52% 0.2%
type 20.68 ms +6.48% -10.98% 20.42 ms +14.69% -5.34% 1.27%
typeWithoutInspector 20.89 ms +2.06% -8.81% 20.04 ms +0.7% -1.05% 4.24%
typeWithTopToolbar 25.14 ms +7.92% -3.5% 26.17 ms +6.61% -6.34% -3.94%
typeContainer 8.48 ms +12.38% -7.43% 8.8 ms +4.43% -4.77% -3.64%
focus 74.9 ms +11.38% -7.24% 74.18 ms +4.91% -9.33% 0.97%
firstFocus 221.14 ms +0% -0% 208.97 ms +0% -0% 5.82%
selectAll 529.05 ms +0.67% -3.45% 527.83 ms +1.53% -2.92% 0.23%
listViewOpen 73.71 ms +1.33% -6.99% 67.75 ms +16.74% -5.58% 8.8%
inserterOpen 21.68 ms +17.34% -7.15% 23.21 ms +10.34% -7.88% -6.59%
inserterHover 3.17 ms +8.2% -6.94% 3.29 ms +15.81% -7.6% -3.65%
inserterSearch 7.94 ms +12.72% -5.29% 8.22 ms +9.98% -14.36% -3.41%
loadPatterns 643.66 ms +4.89% -4.59% 629.25 ms +3.04% -2.26% 2.29%
wpTotal 478.02 ms +6.83% -2.72% 481.94 ms +2.8% -2.02% -0.81%
wpMemoryUsage 13.13 MB +0% -0% 13.09 MB +0% -0% 0.28%
wpDbQueries 54 +0% -1.85% 54 +0% -1.85% 0%

site-editor

Metric 2da8ed6 trunk % Change
serverResponse 307.34 ms +4.69% -6.4% 293.95 ms +6.2% -5.83% 4.56%
firstPaint 219.76 ms +15.69% -16.86% 183.56 ms +13.12% -12.66% 19.72%
domContentLoaded 851.64 ms +2.53% -1.22% 860.89 ms +1.01% -1.93% -1.07%
loaded 852.58 ms +2.53% -1.24% 861.8 ms +1.01% -1.93% -1.07%
firstContentfulPaint 347.51 ms +3.09% -3.06% 346.72 ms +0.78% -1.46% 0.23%
firstBlock 3060.61 ms +2.16% -1.59% 3011.87 ms +0.53% -0.22% 1.62%
type 15.53 ms +2.19% -2.96% 16.03 ms +12.23% -3.99% -3.12%
navigate 98.73 ms +16.46% -3.17% 107.26 ms +6.19% -5.33% -7.95%
loadPatterns 1131.07 ms +10.58% -12.44% 884.06 ms +12.35% -8.67% 27.94%
loadPages 1021.25 ms +0.94% -1.86% 1022.65 ms +2.81% -1% -0.14%
wpTotal 299.2 ms +4.84% -6.66% 285.62 ms +6.42% -6.05% 4.75%
wpMemoryUsage 12.10 MB +0% -0% 12.05 MB +0% -0% 0.4%
wpDbQueries 44 +0% -2.27% 44 +0% -2.27% 0%

f0373eb Run

🏁 Flaky tests

Show the failures

Some tests passed with failed attempts. The failures may not be related to this commit but are still reported for visibility. See the documentation for more information.

refuses the drop and uploads nothing in /test/e2e/specs/editor/various/single-file-placeholder-drop.spec.js, passed after 1 failed attempt.
Error: expect(received).toHaveLength(expected)

Expected length: 0
Received length: 2
Received array:  [{"_links": {"about": [{"href": "http://localhost:8889/wp-json/wp/v2/types/attachment"}], "author": [{"embeddable": true, "href": "http://localhost:8889/wp-json/wp/v2/users/1"}], "collection": [{"href": "http://localhost:8889/wp-json/wp/v2/media"}], "curies": [{"href": "https://api.w.org/{rel}", "name": "wp", "templated": true}], "replies": [{"embeddable": true, "href": "http://localhost:8889/wp-json/wp/v2/comments?post=241"}], "self": [{"href": "http://localhost:8889/wp-json/wp/v2/media/241", "targetHints": {"allow": ["GET", "POST", "PUT", "PATCH", "DELETE"]}}], "wp:attached-to": [{"embeddable": true, "href": "http://localhost:8889/wp-json/wp/v2/posts/239", "id": 239, "post_type": "post"}]}, "alt_text": "", "author": 1, "caption": {"rendered": ""}, "class_list": ["post-241", "attachment", "type-attachment", "status-inherit", "hentry", "entry"], "comment_status": "open", "date": "2026-09-22T14:56:00", "date_gmt": "2026-09-22T14:56:00", "description": {"rendered": "<p class=\"attachment\"><a href='http://localhost:8889/wp-content/uploads/2026/09/10x10_e2e_test_image_z9T8jK-1.png'><img loading=\"lazy\" decoding=\"async\" width=\"10\" height=\"10\" src=\"http://localhost:8889/wp-content/uploads/2026/09/10x10_e2e_test_image_z9T8jK-1.png\" class=\"attachment-medium size-medium\" alt=\"\" style=\"width:100%;height:100%;max-width:10px;\" /></a></p>
"}, "featured_media": 0, "filename": "10x10_e2e_test_image_z9T8jK-1.png", "filesize": 80, "guid": {"rendered": "http://localhost:8889/wp-content/uploads/2026/09/10x10_e2e_test_image_z9T8jK-1.png"}, "id": 241, "link": "http://localhost:8889/?attachment_id=241", "media_details": {"file": "2026/09/10x10_e2e_test_image_z9T8jK-1.png", "filesize": 80, "height": 10, "image_meta": {"alt": "", "aperture": "0", "camera": "", "caption": "", "copyright": "", "created_timestamp": "0", "credit": "", "focal_length": "0", "iso": "0", "keywords": [], "orientation": "0", "shutter_speed": "0", "title": ""}, "sizes": {}, "width": 10}, "media_type": "image", "meta": [], "mime_type": "image/png", "modified": "2026-09-22T14:56:00", "modified_gmt": "2026-09-22T14:56:00", "ping_status": "closed", "post": 239, "slug": "10x10_e2e_test_image_z9t8jk-2", "source_url": "http://localhost:8889/wp-content/uploads/2026/09/10x10_e2e_test_image_z9T8jK-1.png", "status": "inherit", "template": "", "title": {"rendered": "10x10_e2e_test_image_z9T8jK"}, "type": "attachment"}, {"_links": {"about": [{"href": "http://localhost:8889/wp-json/wp/v2/types/attachment"}], "author": [{"embeddable": true, "href": "http://localhost:8889/wp-json/wp/v2/users/1"}], "collection": [{"href": "http://localhost:8889/wp-json/wp/v2/media"}], "curies": [{"href": "https://api.w.org/{rel}", "name": "wp", "templated": true}], "replies": [{"embeddable": true, "href": "http://localhost:8889/wp-json/wp/v2/comments?post=240"}], "self": [{"href": "http://localhost:8889/wp-json/wp/v2/media/240", "targetHints": {"allow": ["GET", "POST", "PUT", "PATCH", "DELETE"]}}], "wp:attached-to": [{"embeddable": true, "href": "http://localhost:8889/wp-json/wp/v2/posts/239", "id": 239, "post_type": "post"}]}, "alt_text": "", "author": 1, "caption": {"rendered": ""}, "class_list": ["post-240", "attachment", "type-attachment", "status-inherit", "hentry", "entry"], "comment_status": "open", "date": "2026-09-22T14:55:59", "date_gmt": "2026-09-22T14:55:59", "description": {"rendered": "<p class=\"attachment\"><a href='http://localhost:8889/wp-content/uploads/2026/09/10x10_e2e_test_image_z9T8jK.png'><img loading=\"lazy\" decoding=\"async\" width=\"10\" height=\"10\" src=\"http://localhost:8889/wp-content/uploads/2026/09/10x10_e2e_test_image_z9T8jK.png\" class=\"attachment-medium size-medium\" alt=\"\" style=\"width:100%;height:100%;max-width:10px;\" /></a></p>
"}, "featured_media": 0, "filename": "10x10_e2e_test_image_z9T8jK.png", "filesize": 80, "guid": {"rendered": "http://localhost:8889/wp-content/uploads/2026/09/10x10_e2e_test_image_z9T8jK.png"}, "id": 240, "link": "http://localhost:8889/?attachment_id=240", "media_details": {"file": "2026/09/10x10_e2e_test_image_z9T8jK.png", "filesize": 80, "height": 10, "image_meta": {"alt": "", "aperture": "0", "camera": "", "caption": "", "copyright": "", "created_timestamp": "0", "credit": "", "focal_length": "0", "iso": "0", "keywords": [], "orientation": "0", "shutter_speed": "0", "title": ""}, "sizes": {}, "width": 10}, "media_type": "image", "meta": [], "mime_type": "image/png", "modified": "2026-09-22T14:55:59", "modified_gmt": "2026-09-22T14:55:59", "ping_status": "closed", "post": 239, "slug": "10x10_e2e_test_image_z9t8jk", "source_url": "http://localhost:8889/wp-content/uploads/2026/09/10x10_e2e_test_image_z9T8jK.png", "status": "inherit", "template": "", "title": {"rendered": "10x10_e2e_test_image_z9T8jK"}, "type": "attachment"}]
    at /home/runner/work/gutenberg/gutenberg/test/e2e/specs/editor/various/single-file-placeholder-drop.spec.js:71:45

f0373eb Run

@aduth

aduth commented Sep 18, 2026

Copy link
Copy Markdown
Member

Hey 👋 I wanted to give you a heads-up since this pull request is affected by recent validation changes for changelog files.

#83043 adds additional validation for changelog files. You'll note that this pull request is currently failing a "Required changes from trunk" check.

What you'll need to do: You will need to either rebase or merge the latest code from trunk. In addition, a cursory review of open pull requests identified this pull request as potentially failing under the new validation checks. You will want to double-check that any changes to CHANGELOG.md files follow the Maintaining Changelogs guidance, which has been improved as part of these recent changes.

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

[Block] Post Excerpt Affects the Post Excerpt Block [Package] Block library /packages/block-library [Type] Bug An existing feature does not function as intended

Projects

None yet

Development

Successfully merging this pull request may close these issues.

the_excerpt() function return excerpt with different length in page load and ajax request

8 participants