Make WordPress Core

Opened 8 months ago

Closed 3 months ago

Last modified 2 months ago

#63120 closed defect (bug) (fixed)

Emojis in plugin titles render in front of text characters

Reported by: slimndap's profile slimndap Owned by: helen's profile helen
Milestone: 6.9 Priority: normal
Severity: minor Version:
Component: Plugins Keywords: has-test-info dev-feedback has-patch
Focuses: ui, css Cc:

Description

If the plugin title contains an emoji, eg. myplugin❤️wordpress, the plugin name looks like this on the WordPress plugins admin page: ❤️mypluginwordpress.

This is caused by the following CSS:

.plugins .plugin-title .dashicons, .plugins .plugin-title img {
    float: left;
}

To reproduce:

  1. Create myplugin❤️wordpress.php in the plugins folder.
  2. Add the following header:
      <?php
      /**
       * Plugin Name: myplugin❤️wordpress
       */
    
  3. Go to wp-admin/plugins.php

The plugin name is presented as ❤️mypluginwordpress.

Attachments (17)

Screenshot 2025-03-18 at 14.36.56.png (26.5 KB) - added by slimndap 8 months ago.
Screenshot
1.png (35.2 KB) - added by sandeepdahiya 6 months ago.
screenshot.png (27.1 KB) - added by sandeepdahiya 6 months ago.
63120.diff (503 bytes) - added by sandeepdahiya 6 months ago.
Patch
63120.2.diff (1.3 KB) - added by helen 3 months ago.
63120-Updates-before.png (140.9 KB) - added by sabernhardt 2 months ago.
Updates page: before
63120-Updates-trunk.png (140.6 KB) - added by sabernhardt 2 months ago.
Updates page: after
63120-Updates-RTL-before.png (130.1 KB) - added by sabernhardt 2 months ago.
Updates page (RTL direction): before, identifying file types
63120-Updates-RTL-trunk.png (129.3 KB) - added by sabernhardt 2 months ago.
Updates page (RTL direction): after, identifying file types
63120-Plugins-before.png (29.0 KB) - added by sabernhardt 2 months ago.
Plugins listing page: before
63120-Plugins-trunk.png (29.0 KB) - added by sabernhardt 2 months ago.
Plugins listing page: after
63120-Plugins-RTL-before.png (25.6 KB) - added by sabernhardt 2 months ago.
Plugins listing page (RTL direction): before
63120-Plugins-RTL-trunk.png (25.6 KB) - added by sabernhardt 2 months ago.
Plugins listing page (RTL direction): after
63120-Add-Plugin-before.png (135.4 KB) - added by sabernhardt 2 months ago.
Add Plugin page: before
63120-Add-Plugin-trunk.png (134.0 KB) - added by sabernhardt 2 months ago.
Add Plugin page: after
63120-Add-Plugin-RTL-before.png (129.9 KB) - added by sabernhardt 2 months ago.
Add Plugin page (RTL direction): before
63120-Add-Plugin-RTL-trunk.png (130.2 KB) - added by sabernhardt 2 months ago.
Add Plugin page (RTL direction): after

Download all attachments as: .zip

Change History (78)

#1 @slimndap
8 months ago

  • Summary changed from Emojis in plugin title renders in front of text characters to Emojis in plugin titles render in front of text characters

#2 @audrasjb
8 months ago

  • Keywords needs-patch good-first-bug added
  • Milestone changed from Awaiting Review to 6.9
  • Version 6.7.2 deleted

Thanks for reporting this.
Adding good-first-bug as this ticket would be a great opportunity for a new contributor to contribute a first patch.

#3 @ankitkumarshah
8 months ago

Hi @audrasjb and @slimndap,

I tried to replicate the issue but was not able to. I followed the following steps in both 6.7.2 and the latest trunk:

I created a plugin with file name: myplugin❤️wordpress.php and following header:

 <?php
  /**
   * Plugin Name: myplugin❤️wordpress
   */

TRUNK:

https://i.postimg.cc/135vqWhp/image.png

6.7.2:
https://i.postimg.cc/sDRjsW-dF/image.png

Please guide me if I am doing something wrong.

#4 @slimndap
8 months ago

I am not sure how emojis inside WordPress work, but the HTML markup appears to be manipulated by javascript, after rendering the page. All emojis are replaced by an image:

 HTML
<strong>myplugin<img draggable="false" role="img" class="emoji" alt="❤️" src="https://s.w.org/images/core/emoji/15.0.3/svg/2764.svg">wordpress</strong>

I don't see this in your screenshot, where it looks like the system emoji is still used.

I am on Chrome 134 on MacOS.

#5 @sabernhardt
8 months ago

With Firefox and Chrome in Windows 11, I did not experience the floating emoji either, but it apparently can happen when the emoji script replaces the character with an image. I tried these in addition to the heart: 🐦‍🔥🙂‍↕️

The float rule is there for plugin icons in the updates table (#30186), where the icon and plugin name are inside a paragraph tag. The plugin name is inside a strong element on both admin screens. I think that restricting it with the child combinator would prevent floating emoji images in the updates table, and adding the .updates-table class could be an extra way to prevent applying those styles on other screens.

.updates-table .plugins .plugin-title p > img,
.plugins .plugin-title .dashicons

#6 @slimndap
8 months ago

Apparently, this only happens if your browser fails the emoji feature detection test, as mentioned in ticket:57301.

Last edited 8 months ago by sabernhardt (previous) (diff)

#7 @debarghyabanerjee
8 months ago

I attempted to replicate the issue by adding multiple emojis, but I was unable to reproduce it in my testing environment.

  • MacOS: 15.3.2
  • WordPress version: 6.7.2, 6.8 Beta 3
  • Google Chrome Version: 134
  • Firefox Version: 136

This ticket was mentioned in PR #8534 on WordPress/wordpress-develop by @ankitkumarshah.


8 months ago
#8

  • Keywords has-patch added; needs-patch removed

Trac ticket: #63120

## What
When a plugin title contains an emoji (e.g., myplugin❤️wordpress), the emoji incorrectly appears before the text on the WordPress plugins admin page, showing as ❤️mypluginwordpress.

#9 @slimndap
8 months ago

I am seeing this on MacOS 12.7.6, which might explain why the emoji feature detection test fails.

#10 @ankitkumarshah
8 months ago

Ok, so I manually failed the emoji feature detection test and found the issue. I also opened the PR with a fix. My current HTML after emoji feature detection test failing is:

<strong>My<img draggable="false" role="img" class="emoji" alt="😀" src="https://s.w.org/images/core/emoji/15.0.3/svg/1f600.svg">Plugin</strong>

Would really appreciate @slimndap and @sabernhardt if you could test the fix. Thank You!

#11 @slimndap
8 months ago

Yes, this fixes the issue for me.
The plugin icons in the updates table also still look fine.

#12 @devsahadat
8 months ago

I tested the proposed fix on MacOS 12.7.6 and Chrome 134, manually failing the emoji feature detection test.
The patch successfully resolves the issue, ensuring emojis in plugin titles no longer appear before the text.

Additionally, plugin icons in the updates table remain unaffected, maintaining their intended layout. ✅

#13 @nusrat21
8 months ago

Reproduced on macOS 12.7.6/Chrome 134 with forced emoji fallback (.emoji class present). Confirmed the float: left rule causes emojis to precede text in plugin titles.

Fix Validation
Tested PR #8534 across multiple environments:
Pass: Chrome 134 (macOS 12.7.6) with emoji fallback active
Pass: Firefox 136 (Windows 11) with native emoji rendering
Verified: Updates table icons remain properly aligned

This ticket was mentioned in PR #8716 on WordPress/wordpress-develop by @dilip2615.


7 months ago
#14

Fixes #63120.

This changeset updates the plugin title styling in the WordPress Admin Plugin List Table.

  • Applied white-space: nowrap, word-break: normal, and inline-flex display to .plugin-title a.
  • Ensures that emojis in plugin titles render correctly without breaking text layout.
  • Fixes visual misalignment issues when plugin names start with emoji characters.

@ant1busted commented on PR #8534:


6 months ago
#15

Hi, I did try this PR in playground and it worked, but I tried with a classic playgournd (not including the PR) it also worked.
Are you sure this does not come from something else in your install?
https://github.com/user-attachments/assets/11cacc3c-e331-4bd1-95e5-e7b1691fc5c3

@ankitkumarshah commented on PR #8534:


6 months ago
#16

Hi @ant1sg,
Thank you for testing the PR!

In your case, it seems that the system fonts are being used for rendering emojis. WordPress includes a fallback mechanism where, if the emoji feature detection test fails, emojis are loaded from https://s.w.org/images/core/emoji/15.0.3/svg/.

However, since your browser successfully uses system emojis, this fallback behavior isn’t triggered—hence, the issue doesn’t occur on your end.

@ant1busted commented on PR #8534:


6 months ago
#17

Hello @Infinite-Null yes I just noticed all the comments on Trac, I had not seen them. Sorry about that. I'll try to rerun the test properly

@sandeepdahiya
6 months ago

@sandeepdahiya
6 months ago

Patch

#18 @sandeepdahiya
6 months ago

  • Keywords needs-testing added

I tried and this patch submitted in this PR https://github.com/WordPress/wordpress-develop/pull/8534 is working perfectly.

Last edited 6 months ago by sandeepdahiya (previous) (diff)

@sandeepdahiya commented on PR #8534:


6 months ago
#19

I tried and this patch submitted and it is working perfectly. Thanks.

#20 @SirLouen
6 months ago

  • Keywords dev-feedback has-test-info added; needs-testing removed

Test Report

Description

✅ This report validates that the indicated patch works as expected.

Patch tested: https://github.com/WordPress/wordpress-develop/pull/8534.diff

Environment

  • WordPress: 6.9-alpha-60093-src
  • PHP: 8.2.28
  • Server: nginx/1.27.5
  • Database: mysqli (Server: 8.4.5 / Client: mysqlnd 8.2.28)
  • Browser: Chrome 137.0.0.0
  • OS: Windows 10/11
  • Theme: Twenty Eleven 4.9
  • MU Plugins: None activated
  • Plugins:
    • Test Reports 1.2.0

Actual Results

  1. ✅ Issue resolved with patch.

Additional Notes

  • Why @dilip2615 has sent another PR8716 (that doesn't even work) when we already had PR8534 that seemed to be working? Mysteries of Trac.

#21 @wpfy
6 months ago

Reproduction Report

Description

This report validates whether the issue can be reproduced.

Environment

  • WordPress: 6.9-alpha-60093-src
  • PHP: 8.2.28
  • Server: nginx/1.25.4
  • Database: mysqli (Server: 8.0.42 / Client: mysqlnd 8.2.28)
  • Browser: Chrome 137.0.0.0
  • OS: macOS
  • Theme: Twenty Twenty-Five 1.2
  • MU Plugins: None activated
  • Plugins:
    • Test Reports 1.2.0

Actual Results

  1. ❌ Unable to reproduce the issue.
  2. The reported behavior did not occur under the tested conditions.

Additional Notes

  • I followed the exact steps provided in the ticket.

Supplemental Artifacts

Add Inline: https://share.cleanshot.com/KnklzsTr
https://share.cleanshot.com/8FSVmZ5J

Last edited 6 months ago by wpfy (previous) (diff)

#22 @hmbashar
6 months ago

Test Report

Description

Hi, I tried this without any PR or changes, and it worked. Are you sure this issue does not stem from something else in your installation?

Environment

  • WordPress: 6.9-alpha-60093-src
  • PHP: 8.2.28
  • Server: nginx/1.25.4
  • Database: mysqli (Server: 8.0.41 / Client: mysqlnd 8.2.28)
  • Browser: Chrome 136.0.0.0
  • OS: macOS
  • Theme: Hello Elementor 3.4.3
  • MU Plugins: None activated
  • Plugins:
    • Revix Reviews ❤️ – All-in-One Business Review Manager 1.2.3
    • Test Reports 1.2.0

https://i.ibb.co/G4wFY85h/Screenshot-at-Jun-05-12-55-08-PM.png
https://i.ibb.co/Nn95BkG4/Screenshot-at-Jun-05-12-55-18-PM.png

Last edited 6 months ago by hmbashar (previous) (diff)

#23 follow-up: @ankitkumarshah
6 months ago

Hi @hmbashar 👋,

Thank you for testing,

In your case, it looks like system fonts are being used to render emojis. WordPress includes a fallback mechanism that loads emojis from https://s.w.org/images/core/emoji/15.0.3/svg/ when the emoji feature detection test fails.

However, since your browser is successfully rendering emojis using system fonts, the fallback isn’t triggered — which is why the issue doesn’t occur on your end.

This ticket was mentioned in Slack in #core-test by sirlouen. View the logs.


6 months ago

#25 @klevismiho
5 months ago

  • Version set to 6.8

Just tested it from my Mac and I confirm the issue is happening on WordPress: 6.8.1

This is the code it is outputting:

<strong>myplugin<img draggable="false" role="img" class="emoji" alt="❤️" src="https://s.w.org/images/core/emoji/15.1.0/svg/2764.svg">wordpress</strong>

This is the css that breaks it:

.plugins .plugin-title .dashicons,.plugins .plugin-title img {
    float: left;
    padding: 0 10px 0 0;
    width: 64px;
    height: 64px
}

On another Mac I tested, the code looks like this and it works fine.

<strong>myplugin❤️wordpress</strong>

#26 in reply to: ↑ 23 @SirLouen
5 months ago

  • Keywords needs-test-info added; dev-feedback has-test-info removed

Replying to ankitkumarshah:

Hi @hmbashar 👋,

Thank you for testing,

In your case, it looks like system fonts are being used to render emojis. WordPress includes a fallback mechanism that loads emojis from https://s.w.org/images/core/emoji/15.0.3/svg/ when the emoji feature detection test fails.

However, since your browser is successfully rendering emojis using system fonts, the fallback isn’t triggered — which is why the issue doesn’t occur on your end.

Do you know how the people can avoid system fonts to ha a more consistent testing instructions that can just anyone replicate?

#27 @ankitkumarshah
5 months ago

  • Keywords has-test-info added; needs-test-info removed

Manually Trigger WordPress Emoji Fallback

Hi everyone,

If you’d like to manually disable emoji detection and allow WordPress to use its fallback emoji rendering, you can do so by updating your session storage:

  1. Open DevTools in your browser.
  2. Navigate to Application > Session Storage.
  3. Look for your WordPress site URL — for me it is: http://localhost:8889.
  4. Under that, locate the key named wpEmojiSettingsSupports.
  5. You’ll see a value like this:
    {"supportTests":{"flag":true,"emoji":true},"timestamp":1749454141039}
    
  1. Update it to the following to simulate no emoji support:
    {"supportTests":{"flag":false,"emoji":false},"timestamp":1749454141039}
    

This change will trigger the fallback emoji rendering provided by WordPress.

Before:

https://i.postimg.cc/ncYXNFP3/image.png

After:

https://i.postimg.cc/sgLsNbsn/image.png

cc: @hmbashar, @wpfy, @SirLouen

#28 follow-up: @tomdevisser
5 months ago

  • Keywords changes-requested dev-feedback added; has-patch removed

Hi everyone,

Thank you all for your hard work on this bug so far.

There are many ways to “fix” this bug, but to make the best decision, it would be helpful to first understand why the float CSS rule is applied to images here.

The given patch adds an extra class and a more specific selector, but it’s difficult to determine what might be broken without knowing the purpose of the float rule.

For example, a more specific solution like the following might be a safer and more modern approach:

- .plugins .plugin-title img
+ .plugins .plugin-title img:not(.emoji)

I’ve tested this fix using the suggested method by @ankitkumarshah (thank you!).

If someone could enlighten me about the reason this CSS rule is here in the first place, we can decide on the best fix, which might even involve deleting the img selector entirely. I’ll then upload a patch.

#29 in reply to: ↑ 28 ; follow-up: @sabernhardt
5 months ago

  • Keywords has-patch added; changes-requested removed
  • Version 6.8 deleted

it would be helpful to first understand why the float CSS rule is applied to images here.

In comment:5, I pointed to #30186, which added the float style for plugin thumbnails on the Updates screen whenever their plugins have an update available. The current patch makes the selector target only the thumbnail images on the Updates screen.

That said, .plugins .plugin-title img:not(.emoji) could fix this specific bug with emoji replacement images and is worth considering too.

I removed the version again because it could happen before 6.8. The CSS goes back to 4.9, but the earliest I could reproduce it with the emoji script was 5.0.

#30 in reply to: ↑ 29 @tomdevisser
5 months ago

Replying to sabernhardt:

In comment:5, I pointed to #30186, which added the float style for plugin thumbnails on the Updates screen whenever their plugins have an update available. The current patch makes the selector target only the thumbnail images on the Updates screen.

I apologise for missing that. Thanks for bringing it to my attention.

That said, .plugins .plugin-title img:not(.emoji) could fix this specific bug with emoji replacement images and is worth considering too.

I still believe this would be the cleaner solution, as it’s more specific to this particular bug. What are your thoughts? Do you have a preferred solution?

#31 follow-ups: @sabernhardt
5 months ago

  1. .updates-table .plugins .plugin-title p > img tells more precisely where to apply the style (perhaps excessively precise).
  2. .plugins .plugin-title img:not(.emoji) could fix the emoji bug more simply.

I am a little biased toward the first option, but I suppose a major factor in choosing that is whether another (unidentified) type of image could still get the float styles if the selector only excludes .emoji.

However, to avoid increasing the CSS specificity level, which could override some styles from plugins, it seems easier to add :where() to the second option:
.plugins .plugin-title img:where(:not(.emoji))

#32 in reply to: ↑ 31 @tomdevisser
5 months ago

Replying to sabernhardt:

However, to avoid increasing the CSS specificity level, which could override some styles from plugins, it seems easier to add :where() to the second option:
.plugins .plugin-title img:where(:not(.emoji))

Wow, I didn’t know about WP Directory! I’m glad to learn about it.

I’m happy with both options and would like to follow your decision since you have more experience as a contributor. Please let me know if you’d like me to create a new patch or if you think the current one is ready for merging!

#33 in reply to: ↑ 31 ; follow-up: @sandeepdahiya
5 months ago

Replying to sabernhardt:

I am a little biased toward the first option, but I suppose a major factor in choosing that is whether another (unidentified) type of image could still get the float styles if the selector only excludes .emoji.

The .updates-table .plugins .plugin-title targets the update section on dashboard while on plugins page, it is .wp-list-table.plugins .plugin-title. so updating

.plugins .plugin-title img:where(:not(.emoji))

seems like a better choice to target both the fields and avoid unnecessary layout shifts.

#34 @sandeepdahiya
5 months ago

Also, the entire plugin icon behaviour started here in this Changeset 41695.

Last edited 5 months ago by sandeepdahiya (previous) (diff)

This ticket was mentioned in PR #8960 on WordPress/wordpress-develop by @sandeepdahiya.


5 months ago
#35

I have create a patch with the necessary changes discussed here: https://core.trac.wordpress.org/ticket/63120#comment:31

Trac ticket: https://core.trac.wordpress.org/ticket/63120

#36 in reply to: ↑ 33 @tomdevisser
5 months ago

Replying to sandeepdahiya:

The .updates-table .plugins .plugin-title targets the update section on dashboard while on plugins page, it is .wp-list-table.plugins .plugin-title. so updating

.plugins .plugin-title img:where(:not(.emoji))

seems like a better choice to target both the fields and avoid unnecessary layout shifts.

That’s a good observation. This is why I instinctively leaned towards this solution, even though I didn’t have concrete proof. Also, the PR looks great. Thanks!

This ticket was mentioned in PR #9195 on WordPress/wordpress-develop by amoljadhavminiorange.


5 months ago
#37

#63120- Emojis in plugin titles render in front of text characters

Trac ticket: https://core.trac.wordpress.org/ticket/63120

This ticket was mentioned in PR #9293 on WordPress/wordpress-develop by harshitjha1430.


4 months ago
#38

This PR addresses Trac Ticket #63120, which reports that if the plugin title contains an emoji, eg. myplugin❤️wordpress, the plugin name looks like this on the WordPress plugins admin page: ❤️mypluginwordpress.
🔍 Steps to Reproduce:
Create a plugin with an emoji in the Plugin Name header (e.g., Plugin Name: ❤️ My Plugin).

Activate the plugin and navigate to Plugins → Installed Plugins.

Emoji in the plugin title does not render correctly — instead, a fallback character appears.

🛠️ Fix Summary:
Updates rendering logic to preserve and correctly display Unicode characters including emojis.

Ensures consistent emoji rendering across supported browsers.


https://github.com/user-attachments/assets/8685b492-2e63-4c93-b6d1-84bedd83fd36
Tested On:
WordPress trunk (latest 6.x nightly)

Browsers: Chrome (Win), Firefox (Win)

Local environment: wp-env

#39 @sabernhardt
4 months ago

#63767 was marked as a duplicate.

This ticket was mentioned in PR #9351 on WordPress/wordpress-develop by @jackgona.


4 months ago
#40

This PR fixes a layout issue in the WordPress admin plugin list screen where plugin titles containing emojis are displayed incorrectly.

The current CSS rule floats all <img> elements inside .plugin-title, which unintentionally affects emojis (as some browsers render them as images). This causes the emoji to be pulled out of the text and floated to the left.

What’s Fixed
Updated the CSS selector to target only actual icons and image elements meant for layout (e.g., .dashicons, icon classes, data URIs), ensuring emoji characters remain inline with the text.

Before
Plugin title: myplugin❤️wordpress
Rendered as: ❤️mypluginwordpress

After (With Fix)
Rendered correctly as: myplugin❤️wordpress

.plugins .plugin-title .dashicons,
.plugins .plugin-title img.dashicons,
.plugins .plugin-title img[class*="icon"],
.plugins .plugin-title img[src*="data:image"] {
    float: left;
    padding: 0 10px 0 0;
    width: 64px;
    height: 64px;
}

Trac Ticket : https://core.trac.wordpress.org/ticket/63120

This change improves visual consistency for plugin authors using emojis in their titles.

#41 @jorbin
3 months ago

  • Keywords good-first-bug removed
  • Owner set to jorbin
  • Status changed from new to assigned

Removing good-first-bug since there seems to be a good-proposed solution. Thanks everyone who worked on this.

@jackgona @harshitjha1430 and amoljadhavminiorange on github: If you are going to propose an alternative solution, please make sure to include a comment here with some justification about why an existing proposal is insufficient or why an alternative approach should be considered.

https://github.com/WordPress/wordpress-develop/pull/8960/ (the where(:not(.emoji)) proposal) is looking good to me. The only thing I want to make sure is that if this issue is also present on the plugin installation screen, this patch fixes it there as well. I'm not able to find a plugin in the directory with emoji in its title, so I've reached out to the plugin team to see if they are aware of one.

#42 @jorbin
3 months ago

  • Keywords commit added

Props to @threadi, https://wordpress.org/plugins/story-show-gallery/ is an existing plugin that has an emoji in the title. I tested on the plugin install screen ( wp-admin/plugin-install.php?s=florcz&tab=search&type=author ) and this issue is not present there either with or without the patch.

I want to give the folks who supplied the alternative patches an opportunity to speak up, so not committing this yet but planning to next week if there is no reason presented not to.

@peterwilsoncc commented on PR #9195:


3 months ago
#43

This pull request is a duplicate of earlier work in https://github.com/WordPress/wordpress-develop/pull/8534 so I'll close it off to avoid confusion.

@sabernhardt commented on PR #8960:


3 months ago
#44

I made screenshots with Currency Converter Widget ⚡ PRO, which has the emoji in the middle of the name. By installing an older version, it appears on the Updates screen too.

In the plugin-install.php search results, the emoji in the plugin name displays the same both before and after the patch.

Before
https://github.com/user-attachments/assets/1d9d7a74-985c-4f6e-b3a5-539ae0a89952
With patch
https://github.com/user-attachments/assets/705a36fa-600f-4a98-878c-720b3b263faf

On the Plugins screen, the emoji image in a plugin's name floated before the patch, but it appears in the middle of the name with the patch.

Before
https://github.com/user-attachments/assets/1fdc7978-4b1a-4aad-af88-d777fb041ef7
With patch
https://github.com/user-attachments/assets/b468a587-feb1-4378-923d-e9cbae6ea83a

On the Updates screen, the plugins list also had a floating emoji image before the patch, and it likewise appears in the middle of the name with the patch. The plugin thumbnails still float, as intended.

Before
https://github.com/user-attachments/assets/59148b83-9aac-4542-865b-fdc4b4ec211c
With patch
https://github.com/user-attachments/assets/3b747980-143e-4edf-8da2-589e36fbb016

#45 @rollybueno
3 months ago

Test Report

Description

This report validates whether the indicated patch works as expected.

Patch tested: https://github.com/WordPress/wordpress-develop/pull/8960/

Environment

  • WordPress: 6.9-alpha-60093-src
  • PHP: 8.2.29
  • Server: nginx/1.29.0
  • Database: mysqli (Server: 8.4.6 / Client: mysqlnd 8.2.29)
  • Browser: Chrome 137.0.0.0
  • OS: Linux
  • Theme: Twenty Twenty-Five 1.2
  • MU Plugins: None activated
  • Plugins:
    • Test Reports 1.2.0

Actual Results

Giving this a try as well:

  1. On default, I cannot reproduce same as other folks here
  2. Try following https://core.trac.wordpress.org/ticket/63120#comment:27 and you should be able to.

✅ Issue resolved with patch

Additional Notes

  • I created 3 test plugins with emojis on the name, in 3 different positions:
  1. Before Title Text
  2. In the middle of the title
  3. At the end on the title

Supplemental Artifacts

Before patch:
https://i.imgur.com/XMJvYo6.png

After patch:
https://i.imgur.com/qjSZCS6.png

@jamesgiroux commented on PR #9351:


3 months ago
#46

I've tested the patch and validated that it works as documented.

#47 @jamesgiroux
3 months ago

I've tested the patch and validated that it works as documented.

#48 @whyisjake
3 months ago

  • Resolution set to fixed
  • Status changed from assigned to closed

In 60673:

Plugins: Fix emoji positioning in plugin titles on plugins list table.

Prevents emojis in plugin titles from floating to the front of text when
WordPress uses emoji fallback rendering. When emoji feature detection fails,
WordPress replaces emoji characters with <img> elements that were incorrectly
affected by CSS float rules intended for plugin icons.

Updates CSS selectors to target specific icon types (dashicons, icon classes,
and data URI images) rather than all images, ensuring emoji images remain
inline with plugin title text while preserving proper layout for actual
plugin icons.

  • Consolidates .plugins .plugin-title img and .plugins .plugin-title .dashicons rules
  • Adds support for img.dashicons, img[class*="icon"], and img[src*="data:image"] selectors
  • Maintains 64px sizing and left float for legitimate plugin icons
  • Fixes visual issue where "myplugin❤️wordpress" displayed as "❤️mypluginwordpress"

Props slimndap, ankitkumarshah, sandeepdahiya, sabernhardt, tomdevisser,
debarghyabanerjee, nusrat21, SirLouen, wpfy, hmbashar, klevismiho,
rollybueno, jamesgiroux, jorbin, whyisjake.

Fixes #63120.

#49 @sabernhardt
3 months ago

  • Keywords commit removed
  • Resolution fixed deleted
  • Status changed from closed to reopened

Reopening to revert [60673] and then revisit committing PR 8960.

Most plugin images on the Updates screen do not have a class or a data URL, so the changes in PR 8931 did not apply the float and dimensions correctly.

@helen
3 months ago

This ticket was mentioned in Slack in #core by whyisjake. View the logs.


3 months ago

#51 @helen
3 months ago

63120.2.diff is a little bit of a different approach and I think more correct - I'd like to avoid less-performant complex selectors like not() and partial matches if we don't have to use them, and since we can add a class we should do that. So this adds the plugin-icon class to those images which will be helpful semantically anyway, and updates the existing plugin-icon styles to be specific to plugin-card (install screen).

#52 @helen
3 months ago

  • Resolution set to fixed
  • Status changed from reopened to closed

In 60680:

Plugins: Ensure only plugin icons are floated.

There's no reason not to add a semantic class to the plugin icons on the update screen instead of making our CSS more complex, so let's do that and ensure that the existing .plugin-icon styles are scoped to .plugin-card on the install screen.

Partially reverts [60673].
Fixes #63120.

#53 follow-up: @matt
3 months ago

At no point did anyone ask if we should even allow emojis in plugin names; it seems like a rabbit hole. There are overton windows for charsets, and opening them could inject a lot of data we don't want to deal with.

#54 @sabernhardt
3 months ago

  • Resolution fixed deleted
  • Status changed from closed to reopened

I still want a full revert, even though it is more difficult now with two commits. The theme screenshots do not float anymore on the Updates screen, and continuing to patch the changes would be a rabbit hole.

#55 in reply to: ↑ 53 @helen
3 months ago

Replying to matt:

At no point did anyone ask if we should even allow emojis in plugin names

I did verbally at contributor day without yet coming back to the ticket; in the moment felt it more important to fix the breakage since it exists. I would agree that emoji in plugin titles are unnecessary but don't have opinions on whether they should be fully disallowed - IMO would be good to do some due diligence on how often that's been done so far, and identification of what problems are or could happen because of them (slugs, injection, etc.). Perhaps somebody would like to take on opening something like a meta.trac ticket for this?

@sabernhardt I disagree that this is a rabbit hole, theme screenshot positioning is a low effort repair and that breakage is a symptom of the real problem going on here: that we let theme updates inherit from plugin update styling. We should fix it regardless and I will, it is perfectly fine to have fast-follow fixes even when we strive not to have to do them often.

#56 @helen
3 months ago

  • Resolution set to fixed
  • Status changed from reopened to closed

In 60683:

Updates: Ensure theme screenshots are positioned correctly.

Underlying problem: the updates list tables inherit styles from classes named for plugins. This makes the intention much more explicit so we can actually maintain and make changes sanely going forward.

Fixes #63120.

#57 @jorbin
3 months ago

  • Resolution fixed deleted
  • Status changed from closed to reopened

Reopening since the owner can't be changed on closed tickets.

#58 @jorbin
3 months ago

  • Owner changed from jorbin to helen
  • Status changed from reopened to assigned

#59 @jorbin
3 months ago

  • Resolution set to fixed
  • Status changed from assigned to closed

#60 @sabernhardt
2 months ago

I'll attach before and after screenshots to show that both the plugin icon and emoji images display correctly in trunk.

  • Before screenshots use 6.8.2.
  • After screenshots use trunk as of [60690].
  • The Updates page screenshots show plugin icons in multiple file types (annotated in the RTL screenshots):
    • SVG
    • PNG
    • JPEG
    • <canvas>, replacing the GIF because I turned off animations in Windows
  • Similarly, the Updates page screenshots show theme thumbnail images for both JPEG and PNG file types.
  • The Plugins listing screenshots demonstrate that the emoji image does not float anymore.
  • The Add Plugins page displays the plugin icons the same way before and after the changes.

Also, some plugins should update their styles to account for the repurposed .plugin-icon class or the increased specificity, though the impact seems small.

@sabernhardt
2 months ago

Updates page: before

@sabernhardt
2 months ago

Updates page: after

@sabernhardt
2 months ago

Updates page (RTL direction): before, identifying file types

@sabernhardt
2 months ago

Updates page (RTL direction): after, identifying file types

@sabernhardt
2 months ago

Plugins listing page: before

@sabernhardt
2 months ago

Plugins listing page: after

@sabernhardt
2 months ago

Plugins listing page (RTL direction): before

@sabernhardt
2 months ago

Plugins listing page (RTL direction): after

@sabernhardt
2 months ago

Add Plugin page: before

@sabernhardt
2 months ago

Add Plugin page: after

@sabernhardt
2 months ago

Add Plugin page (RTL direction): before

@sabernhardt
2 months ago

Add Plugin page (RTL direction): after

Note: See TracTickets for help on using tickets.