WordPress 3.8 introduced in core the plugin MP6 that among other things use an iconic font called Dashicons to display fonts in the dashboard.

Now, is well know that register_post_type has an argument 'menu_icon' that allow to specify a custom icon for the CPT admin menu entry.

In my plugins/themes I often use that argument with my custom icon images that normally are dark because before 3.8 admin menu had a light background. With the default dark menu background in WP 3.8 my icons become almost invisible.

That aside, I think that use the new dashicons for my CPT will be cool.

After some research, I know I can just use the CSS from dashicons, something like

#menu-posts-mycpt div.wp-menu-image:before { content: "\f226"; }

However using both 'menu_icon' argument of register_post_type and previous css will print both icons in WP 3.8 and one icon + a strange char in WP 3.8-, and without use 'menu_icon' argument, on older versions the default icon is used.

I know I can conditionally add 'menu_icon' in register_post_type for WP 3.8- versions and conditionally add previous css for WP 3.8+, but:

  • that involves to add some code (2 conditional statements) for every CPT registered, so updating plugins/themes is quite an hard work
  • it seems to me more a workaround than an elegant solution

So, questions are:

Is possible to use dashicons css for WP 3.8+ and use custom image set up via 'menu_icon' param for previous versions in a “simpler” way that doesn’t involve add 2 conditional for every CPT registered?

And, if so, is possible do that in some automagic way straight from register_post_type without any additional code?

4

After going through the rabbit hole and back, the answer is – yes, core does allow to easily use dashicons when registering post types and adding menu pages.

To use dashicon you need to pass its CSS class dashicons-[name] to menu_icon or icon_url in relevant places.

Classes available can be looked up in dashicons.css in source or Dashicons site (click icon and look at the name for it on top).

Alert! 3.8 seems to have released with dashicons-piechart as example of the class in inline docs, which is wrong and won’t work. Actual class for that icon in release is dashicons-chart-pie.

Leave a Reply

Your email address will not be published. Required fields are marked *