[wp-meta] [Making WordPress.org] #8225: Plugin search: slug field boost creates permanent advantage for grandfathered trademark slugs

Making WordPress.org noreply at wordpress.org
Wed Apr 8 08:22:12 UTC 2026


#8225: Plugin search: slug field boost creates permanent advantage for
grandfathered trademark slugs
------------------------------+--------------------------------------------
 Reporter:  jeangalea         |      Owner:  (none)
     Type:  enhancement       |     Status:  new
 Priority:  normal            |  Milestone:
Component:  Plugin Directory  |   Keywords:  search relevance elasticsearch
------------------------------+--------------------------------------------
 == Problem

 The plugin search algorithm gives the `slug_text` field a **5x boost** —
 the highest text-field weight in the query. This is by design and
 generally makes sense: a slug match is a strong relevance signal.

 However, combined with two other policies, it creates an unintended and
 permanent competitive distortion:

 1. **Guideline 17 and trademark enforcement** block new plugins from using
 trademarked terms (e.g., "instagram", "facebook") in their slugs.
 2. **Slugs cannot be changed after approval** (confirmed in
 https://make.wordpress.org/plugins/2018/11/21/reminder-we-cant-rename-
 plugins-post-approval/).
 3. **Pre-2015 plugins are grandfathered** and keep their trademark-
 containing slugs indefinitely.

 The result: a small number of grandfathered plugins receive a permanent 5x
 text-relevance boost for trademarked search terms that no new plugin can
 ever obtain, regardless of quality, support, or user satisfaction.

 == Concrete example

 Search: "instagram feed"

 - **#1: Smash Balloon Social Photo Feed** — slug `instagram-feed`
 (grandfathered). Gets a 5x boost on both "instagram" and "feed" via
 `slug_text`. Note: the display name no longer contains "Instagram" —
 Meta's lawyers required them to remove it.
 - **#2: Spotlight Social Feeds** — slug `spotlight-social-photo-feeds`.
 Can only match "instagram" via tags (2x boost). Cannot obtain an
 equivalent slug because "instagram" is now blocked.

 The #1 plugin gets a 2.5x text-relevance advantage on the highest-volume
 search term in this category, solely because it was approved before 2015.
 This advantage persists even though the plugin was already forced to
 remove "Instagram" from its display name to comply with trademark
 enforcement.

 == The inconsistency

 WordPress.org enforces trademarks in display names and blocks them in new
 slugs, but the ranking algorithm still rewards grandfathered slugs
 containing those same trademarked terms with a 5x boost. The trademark is
 being enforced on the surface (names, banners, icons) but continues to
 confer a ranking advantage underneath (slug-based search scoring).

 This affects not just Instagram — any grandfathered slug containing a
 trademark that is now blocked gives its holder an insurmountable ranking
 advantage.

 == Code reference

 The 5x slug boost is set in `class-plugin-search.php`:

 {{{#!php
 $should_match[] = [
     'multi_match' => [
         'query'  => $search_phrase,
         'fields' => $this->localise_es_fields( 'title', 'slug_text' ),
         'type'   => 'most_fields',
         'boost'  => 5,
     ],
 ];
 }}}

 Source:
 https://github.com/WordPress/wordpress.org/blob/trunk/wordpress.org/public_html
 /wp-content/plugins/plugin-directory/class-plugin-search.php

 == Suggested approaches

 Any of these would address the issue:

 **Option A: Reduce or remove `slug_text` from the boosted fields.**
 The slug was chosen by the developer at submission time, often years ago.
 It reflects naming strategy, not ongoing quality. Removing it from the
 `should` match (or reducing its boost from 5 to 1-2) would make rankings
 more dependent on current signals like active installs, support quality,
 and content relevance.

 **Option B: Exclude trademarked terms from slug-based scoring.**
 If a slug contains a term that would be blocked under current Guideline 17
 enforcement, exclude that term from the slug boost calculation. This
 preserves slug matching for non-trademarked terms while removing the
 grandfathered advantage for trademarked ones.

 **Option C: Migrate grandfathered trademark slugs to compliant slugs with
 redirects.**
 Update slugs like `instagram-feed` to non-trademarked equivalents (the
 plugin already has a compliant display name). Set up 301 redirects from
 old URLs. This fully aligns slug policy with ranking behavior.

 Option A is the simplest code change and has the broadest fairness
 benefit.

-- 
Ticket URL: <https://meta.trac.wordpress.org/ticket/8225>
Making WordPress.org <https://meta.trac.wordpress.org/>
Making WordPress.org


More information about the wp-meta mailing list