Skip to content

Manual excerpt hyperlinks are stripped on archive pages since Neve 4.2.9 #4598

Description

@pirate-bot

Summary

Manually authored post excerpts containing hyperlinks render as plain text on Neve blog and archive pages. Hyperlinks in a manual excerpt are expected to remain functional in the preview, as they did before Neve 4.2.9. In Neve 4.2.9 through 4.2.11, the linked text remains visible but its anchor markup is removed, preventing visitors from following links included by editors in archive excerpts.

Customer context

  • Product / area: Neve archive and blog post excerpts
  • Version: Neve 4.2.11; Neve Pro Addon 3.2.9 reported
  • Environment: WordPress 7.1, PHP 8.1
  • Integration / third party: Neve Pro Addon is active, but the affected renderer is in the free Neve theme
  • Reported error / symptom: Hyperlinks recently disappeared from manually entered excerpts
  • Impact: Links intentionally included in archive preview text are no longer interactive

Reproduction notes

Reported workflow and source-confirmed conditions:

  1. Use Neve 4.2.9 through 4.2.11 with excerpts enabled on a blog or archive layout.
  2. Create a post with a manually authored excerpt containing an HTML hyperlink.
  3. Use an excerpt length other than the full-content value and leave the post content without a More marker.
  4. View the post preview on the blog or archive.

Expected: the linked excerpt text remains a hyperlink.
Actual: the linked text is displayed without its anchor markup.

No local runtime reproduction was performed. The exact configured length and archive type from the report are unknown.

Diagnosis

Conclusion

This is a confirmed Neve regression introduced in 4.2.9. The manual-excerpt branch added in commit a600276d4dfa4e945f519cb9e07ad06108b7b7cc passes the excerpt through wp_trim_words(). The WordPress 7.1 reference source confirms that this helper calls wp_strip_all_tags() before trimming, so an <a> element is removed before Neve applies the final excerpt filter. Tag comparison shows that Neve 4.2.8 returned the manual excerpt without this trimming step and that the affected file did not change between 4.2.9 and 4.2.11.

Where this likely occurs

  • Archive/blog excerpt surface: inc/views/partials/excerpt.phpExcerpt::get_excerpt() lines 66–89. The manual-excerpt branch at lines 78–82 sends get_the_excerpt() output through wp_trim_words() before applying the_excerpt.
  • Archive action wiring: inc/views/partials/excerpt.phpExcerpt::init() lines 26–28 and Excerpt::render_post_excerpt() lines 36–38 connect this renderer to neve_excerpt_archive.
  • Regression history: commit a600276d4dfa4e945f519cb9e07ad06108b7b7cc (fix: enhance excerpt handling, 2026-07-17) is contained in tags v4.2.9, v4.2.10, and v4.2.11. The relevant file has no changes from v4.2.9 to v4.2.11.
  • Pro boundary: includes/modules/blog_pro/module.php — related-posts post_excerpt branch lines 432–459 uses the_excerpt() and does not contain the trimming operation. Inspection indicates issue ownership is the free Neve theme repository.
  • Existing issue context: closed issue #4508 covers the pre-4.2.9 failure to apply excerpt length and Read More output to manual excerpts. Open issue #4509 covers consistency of those controls. Neither issue describes the 4.2.9 hyperlink-loss regression.

Engineering notes

The affected branch is reached when the post has a manual excerpt, the configured length is not the special full-content value 300, and post content does not take the More-marker branch. The externally verified WordPress 7.1 implementation strips all HTML before counting words, making hyperlink loss deterministic for this path. The final the_excerpt filter receives text after the anchor has been removed. Neve Pro can expose the shared archive renderer but does not appear to introduce the behavior.

Test coverage status

e2e-tests/specs/customizer/layout/blog-archive-settings.spec.tsBlog/Archive 1 / Default Layout > Excerpt length lines 79–90 verifies visible word count only. It does not create a manual excerpt containing an anchor or assert an excerpt link and therefore misses this regression. No relevant PHPUnit coverage was found during inspection. Pro's related archive tests likewise do not cover hyperlink preservation in manual excerpts.

What to verify or explore next

  • May be worth reproducing with Neve 4.2.11 on a local archive containing a manual excerpt with linked text both below and above the configured excerpt length.
  • A comparison against Neve 4.2.8 can verify the reported version boundary at runtime.
  • The existing Playwright archive suite can be checked with manual-excerpt fixtures across default blog, category archive, and Pro-enhanced custom-post-type archive paths.
  • Compatibility checks may include links that cross the trim boundary and manual excerpts containing other permitted inline formatting.

Unknowns / follow-up

  • The customer did not specify the configured excerpt length, archive type, or whether the linked text crossed the trim boundary.
  • Runtime reproduction was not executed during this inspection; confirmation rests on the exact repository change and the externally verified WordPress 7.1 helper behavior.

Confidence

Confidence: 98/100

Repository history and the WordPress 7.1 reference source directly confirm the regression: Neve 4.2.9 began passing manual excerpt HTML through a helper that strips all tags, and that path remains unchanged in 4.2.11. Existing issues cover excerpt length and Read More behavior, not the newly introduced loss of hyperlinks.


Source: HelpScout #3428761341
Generated by bug-report-triage (ID: bug-report-triage_6a8c86bb529386.56803064)

Metadata

Metadata

Labels

bug-reportbug-report-triagecustomer reportIndicates the request came from a customer.regressionIssue represents a change in behavior from a previous version that is not intended or desired..

Type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions