[Feature Request] Internal Page Linking in WYSIWYG Editor - WordPress-style Page Selector

Problem

Currently, when editors want to link to internal pages in the WYSIWYG editor, they must manually type or copy/paste URLs. This requires either:

  • Opening a second Directus instance to find the page slug
  • Memorizing URL structures and slugs
  • Maintaining a separate reference document

This creates a poor editorial experience compared to CMSs like WordPress, where you can highlight text → click link → search/select from existing pages.

Proposed Solution

Add an “Internal Link” option to the WYSIWYG link dialog that:

  1. Lets editors highlight text and click the link button
  2. Shows a dropdown/search interface to select a collection (posts, products, etc.)
  3. Shows a searchable list of items from that collection (with title/name, not just slug)
  4. Automatically generates the correct URL structure

Use Case

Current workflow:

  1. Writing an article about percussion instruments
  2. Want to link the word “quijada” to the existing Quijada instrument page
  3. Must open /admin/content/instruments in new tab
  4. Find the Quijada entry
  5. Copy the slug
  6. Switch back to article
  7. Manually construct /instrument/quijada/ URL
  8. Paste into link field

Desired workflow:

  1. Highlight “quijada”
  2. Click link button → “Link to Internal Page”
  3. Select collection: “Instruments”
  4. Search/select: “Quijada”
  5. Done - URL auto-generated

Technical Considerations

  • Should work with existing WYSIWYG fields without requiring field recreation (important for Directus 11 where changing interfaces deletes content)
  • Should be collection-agnostic (not hardcoded to specific collections)
  • Could store as #collection/slug syntax and let frontend parse, or resolve to full URL
  • Bonus: Show “broken link” warning if linked item is deleted or unpublished

Similar Feature in Other CMSs

  • WordPress: Built-in page/post search in link dialog
  • Craft CMS: Entry selector for links
  • Contentful: Entry link field type with search

This would significantly improve the editorial experience and reduce errors from manually typed URLs.

Current Workarounds

  • Manual URL entry (error-prone)
  • Custom M2A link blocks (breaks inline text flow)
  • Custom TinyMCE extensions (requires maintenance, collection hardcoding)

Would love to see this as a native Directus feature. Happy to provide more details or help test if this gets prioritized!

Thanks for the feedback @tresero @linda1 - This aligns with our desire to provide more support for content editors natively within Directus. I’ve added this request to our public roadmap to allow others to upvote and feedback:

Hey @tresero, thank you for adding this feature request and for taking the time to really explain its reasoning. We handle feature requests via our roadmap, I have copied plus linked your post as a new request, thanks again.

The editorial ux gap in **Directus** is 100% real.

Manual slug stitching in WYSIWYG is excellent for developers but a pain for content editors. Even worse, it puts url logic in human memory instead of system logic.

If this lands, it must:
* use item id internally (not hardcoded slug strings) * respect draft/published status to avoid linking to unpublished material * Keep links intact during slug modifications Keep collection-agnostic, as you indicated

i wouldn’t keep complete URLs. I would save `{collection}:{id}} in the WYSIWYG output and let the frontend resolver route. that manner, you may alter your route structure without rewriting content.

Also, broken link detection +1. Directus should display the relationship state in the editor if it knows it.

From WordPress, this is one of those “small” things that makes or breaks adoption for non-technical editors. For Directus to compete in editing processes, this internal connecting capability is essential.