This is an older question, but here's the answer for future generations: WordPress will check the styles against a whitelist and it will still strip the `style` attribute if none of the styles are safe. The default whitelist is: * `text-align` * `margin` * `color` * `float` * `border` * `background` * `background-color` * `border-bottom` * `border-bottom-color` * `border-bottom-style` * `border-bottom-width` * `border-collapse` * `border-color` * `border-left` * `border-left-color` * `border-left-style` * `border-left-width` * `border-right` * `border-right-color` * `border-right-style` * `border-right-width` * `border-spacing` * `border-style` * `border-top` * `border-top-color` * `border-top-style` * `border-top-width` * `border-width` * `caption-side` * `clear` * `cursor` * `direction` * `font` * `font-family` * `font-size` * `font-style` * `font-variant` * `font-weight` * `height` * `letter-spacing` * `line-height` * `margin-bottom` * `margin-left` * `margin-right` * `margin-top` * `overflow` * `padding` * `padding-bottom` * `padding-left` * `padding-right` * `padding-top` * `text-decoration` * `text-indent` * `vertical-align` * `width` This list is, as with most things in WordPress, filtered! You can add `display` to it as follows to let your code work as expected: add_filter( 'safe_style_css', function( $styles ) { $styles[] = 'display'; return $styles; } );