Summary
On Neve blog/category archives, the configured Excerpt Length setting is applied to posts without a manually entered excerpt, but posts with a manually entered excerpt can display the full custom excerpt instead. In the same manual-excerpt case, the archive item may also omit the configured Read More link/button.
Expected behavior: archive excerpts are handled consistently, so the configured excerpt length and read-more behavior apply regardless of whether the excerpt is generated from post content or entered manually.
Actual behavior: generated excerpts are trimmed according to the setting and can include the read-more link, while manually entered excerpts bypass that behavior and may render the full manual text.
Impact: archive/category layouts can become inconsistent when editors use the post editor’s manual excerpt field.
Customer context
A Neve Pro customer reported this on blog category/archive views. They specifically noted that the setting works for posts without a manually set excerpt, but not for posts where an excerpt was entered in the post editor. Customer identifiers, site URL, email, and license details are omitted/redacted.
Reproduction notes
Known reproduction from code inspection and the customer report:
- Use Neve with archive content ordering that includes
Excerpt.
- Set
Customizer > Layout > Blog/Archive > Excerpt Length to a low value, for example 15.
- Ensure read-more text/style is enabled if testing the Pro read-more button/link behavior.
- Create one post without a manual excerpt and one post with a long manual excerpt in the post editor.
- View a blog archive or category archive.
Expected: both archive excerpts respect the configured length and read-more behavior.
Actual: the post without a manual excerpt follows the configured length; the post with a manual excerpt can output the full manual excerpt and may omit the read-more link/button.
Runtime reproduction was not executed in this session; the conclusion is based on repository inspection matching the reported symptoms.
Diagnosis
Conclusion
The issue is confirmed in the Neve theme archive excerpt path. The archive renderer treats manual excerpts as an early-return case before applying Neve’s configured excerpt length handling, which matches the customer’s observation that posts without manual excerpts are shortened while posts with manual excerpts are not. The read-more output is tied to the generated excerpt path through the normal excerpt-more flow, so manual excerpts can also miss the configured read-more link/button.
Where this likely occurs
neve/inc/views/partials/excerpt.php:66-87, Neve\Views\Partials\Excerpt::get_excerpt(): the archive excerpt helper gets the configured length at get_post_excerpt(), but get_excerpt() returns immediately for has_excerpt() at lines 78-80 using get_the_excerpt( $post_id ); the excerpt_length filter is only added on lines 82-84 for posts without a manual excerpt.
neve/inc/views/partials/excerpt.php:94-105, Neve\Views\Partials\Excerpt::get_excerpt_length() / change_excerpt_length(): the archive setting is read from neve_post_excerpt_length, but this callback is only installed after the manual-excerpt branch has already returned.
neve/inc/views/template_parts.php:37-45, Neve\Views\Template_Parts::init(): Neve registers excerpt_more and the_content_more_link filters for archive read-more output.
neve/inc/views/template_parts.php:453-495, Neve\Views\Template_Parts::link_excerpt_more(): read-more markup is generated from neve_read_more_args, including the Pro filter for read-more text/style when Blog Pro is active.
neve-pro-addon/includes/modules/blog_pro/module.php:169-198, Neve_Pro\Modules\Blog_Pro\Module::get_read_more_args(): Pro supplies the read-more text/classes, but it does not change the manual excerpt branch in the Neve theme.
neve-pro-addon/includes/modules/post_type_enhancements/views/layout_cpt_archive_view.php:164-172, CPT archive filter: Pro CPT archives can remap theme_mod_neve_post_excerpt_length to CPT-specific settings, but the same Neve manual-excerpt early-return path remains the renderer for archive excerpts.
- Git history:
d5a2d916654c9b56bd5eb2bedcf11f53cbedeb05 introduced the manual excerpt early-return branch. a9e2b6da27e1bb5740a526741fba809f23107690 changed generated excerpts to use get_the_excerpt() with Neve’s excerpt_length filter, but the existing manual-excerpt branch stayed outside that filtered path. This appears longstanding rather than a recent regression.
Engineering notes
- The customer’s described behavior is consistent with the current branch structure: manual excerpts and generated excerpts are not processed by the same Neve length/read-more path.
- The issue is in the free Neve theme repository, even though it was reported by a Neve Pro customer. Pro contributes read-more settings and CPT archive theme-mod remapping, but the divergent behavior is in the theme archive excerpt partial.
- The archive setting label is generic (
Excerpt Length), and current e2e coverage treats archive excerpts as expected to respect that setting. The inspected test fixture does not indicate that manual excerpts are intentionally exempt.
- WordPress core helper behavior was not inspected in this workspace. The confirmed product-level issue is that Neve returns before applying its own configured length handling when a manual excerpt exists.
Test coverage status
neve/e2e-tests/specs/customizer/layout/blog-archive-settings.spec.ts:79-90, Blog/Archive 1 / Default Layout > Excerpt length: verifies archive excerpt word count after setting neve_post_excerpt_length, but it does not set up or assert a post with a manually entered excerpt.
neve/e2e-tests/fixtures/customizer/layout/blog-archive-setting-setup.json:2-9: sets neve_post_excerpt_length to 15 for the archive test fixture.
- No relevant PHPUnit coverage for
Neve\Views\Partials\Excerpt::get_excerpt() manual-excerpt behavior was found during inspection.
- No Neve Pro test coverage for this specific archive manual-excerpt path was found during inspection; Pro contains static-analysis stubs that mirror the Neve class, not behavioral tests.
What to verify or explore next
- Reproduce on a local Neve archive/category page with
Excerpt Length set low, one post with no manual excerpt, and one post with a long manual excerpt.
- Verify both default archives and category archives, since the customer specifically mentioned blog category view/page.
- Verify the read-more behavior with Blog Pro active and
Read More Style set to text/button, plus the default v4 setting where read-more may intentionally be hidden for new users.
- Run the existing Playwright archive test suite after adding a fixture/post case for manual excerpts, especially
e2e-tests/specs/customizer/layout/blog-archive-settings.spec.ts.
- For CPT archive users, verify whether
post_type_enhancements archives exhibit the same manual-excerpt behavior through the remapped theme_mod_neve_post_excerpt_length path.
Confidence
Confidence: 88/100
The reported split between generated excerpts and manually entered excerpts matches a reachable Neve archive rendering branch: only the generated-excerpt path installs Neve’s configured excerpt_length filter, while the manual-excerpt branch returns before that path.
Source: HelpScout #3340953321
Generated by bug-report-triage workflow (ID: bug-report-triage_6a1dc8beb80aa3.18442777)
Summary
On Neve blog/category archives, the configured
Excerpt Lengthsetting is applied to posts without a manually entered excerpt, but posts with a manually entered excerpt can display the full custom excerpt instead. In the same manual-excerpt case, the archive item may also omit the configuredRead Morelink/button.Expected behavior: archive excerpts are handled consistently, so the configured excerpt length and read-more behavior apply regardless of whether the excerpt is generated from post content or entered manually.
Actual behavior: generated excerpts are trimmed according to the setting and can include the read-more link, while manually entered excerpts bypass that behavior and may render the full manual text.
Impact: archive/category layouts can become inconsistent when editors use the post editor’s manual excerpt field.
Customer context
A Neve Pro customer reported this on blog category/archive views. They specifically noted that the setting works for posts without a manually set excerpt, but not for posts where an excerpt was entered in the post editor. Customer identifiers, site URL, email, and license details are omitted/redacted.
Reproduction notes
Known reproduction from code inspection and the customer report:
Excerpt.Customizer > Layout > Blog/Archive > Excerpt Lengthto a low value, for example15.Expected: both archive excerpts respect the configured length and read-more behavior.
Actual: the post without a manual excerpt follows the configured length; the post with a manual excerpt can output the full manual excerpt and may omit the read-more link/button.
Runtime reproduction was not executed in this session; the conclusion is based on repository inspection matching the reported symptoms.
Diagnosis
Conclusion
The issue is confirmed in the Neve theme archive excerpt path. The archive renderer treats manual excerpts as an early-return case before applying Neve’s configured excerpt length handling, which matches the customer’s observation that posts without manual excerpts are shortened while posts with manual excerpts are not. The read-more output is tied to the generated excerpt path through the normal excerpt-more flow, so manual excerpts can also miss the configured read-more link/button.
Where this likely occurs
neve/inc/views/partials/excerpt.php:66-87,Neve\Views\Partials\Excerpt::get_excerpt(): the archive excerpt helper gets the configured length atget_post_excerpt(), butget_excerpt()returns immediately forhas_excerpt()at lines 78-80 usingget_the_excerpt( $post_id ); theexcerpt_lengthfilter is only added on lines 82-84 for posts without a manual excerpt.neve/inc/views/partials/excerpt.php:94-105,Neve\Views\Partials\Excerpt::get_excerpt_length()/change_excerpt_length(): the archive setting is read fromneve_post_excerpt_length, but this callback is only installed after the manual-excerpt branch has already returned.neve/inc/views/template_parts.php:37-45,Neve\Views\Template_Parts::init(): Neve registersexcerpt_moreandthe_content_more_linkfilters for archive read-more output.neve/inc/views/template_parts.php:453-495,Neve\Views\Template_Parts::link_excerpt_more(): read-more markup is generated fromneve_read_more_args, including the Pro filter for read-more text/style when Blog Pro is active.neve-pro-addon/includes/modules/blog_pro/module.php:169-198,Neve_Pro\Modules\Blog_Pro\Module::get_read_more_args(): Pro supplies the read-more text/classes, but it does not change the manual excerpt branch in the Neve theme.neve-pro-addon/includes/modules/post_type_enhancements/views/layout_cpt_archive_view.php:164-172, CPT archive filter: Pro CPT archives can remaptheme_mod_neve_post_excerpt_lengthto CPT-specific settings, but the same Neve manual-excerpt early-return path remains the renderer for archive excerpts.d5a2d916654c9b56bd5eb2bedcf11f53cbedeb05introduced the manual excerpt early-return branch.a9e2b6da27e1bb5740a526741fba809f23107690changed generated excerpts to useget_the_excerpt()with Neve’sexcerpt_lengthfilter, but the existing manual-excerpt branch stayed outside that filtered path. This appears longstanding rather than a recent regression.Engineering notes
Excerpt Length), and current e2e coverage treats archive excerpts as expected to respect that setting. The inspected test fixture does not indicate that manual excerpts are intentionally exempt.Test coverage status
neve/e2e-tests/specs/customizer/layout/blog-archive-settings.spec.ts:79-90,Blog/Archive 1 / Default Layout > Excerpt length: verifies archive excerpt word count after settingneve_post_excerpt_length, but it does not set up or assert a post with a manually entered excerpt.neve/e2e-tests/fixtures/customizer/layout/blog-archive-setting-setup.json:2-9: setsneve_post_excerpt_lengthto15for the archive test fixture.Neve\Views\Partials\Excerpt::get_excerpt()manual-excerpt behavior was found during inspection.What to verify or explore next
Excerpt Lengthset low, one post with no manual excerpt, and one post with a long manual excerpt.Read More Styleset to text/button, plus the default v4 setting where read-more may intentionally be hidden for new users.e2e-tests/specs/customizer/layout/blog-archive-settings.spec.ts.post_type_enhancementsarchives exhibit the same manual-excerpt behavior through the remappedtheme_mod_neve_post_excerpt_lengthpath.Confidence
Confidence: 88/100
The reported split between generated excerpts and manually entered excerpts matches a reachable Neve archive rendering branch: only the generated-excerpt path installs Neve’s configured
excerpt_lengthfilter, while the manual-excerpt branch returns before that path.Source: HelpScout #3340953321
Generated by bug-report-triage workflow (ID: bug-report-triage_6a1dc8beb80aa3.18442777)