How to Include a CSS Style Sheet for a WordPress Page Within a Plugin

For years I used to simply include CSS styles in WordPress plugins that I made for myself by doing it the same ways that you would for a pure HTML website like:

The Wrong Way:

<style>
p{
font-family: arial;
}
</style>

Or I would do it like this with an external stylesheet:

<link rel='stylesheet' href='http://jafty.com/wp-content/plugins/plugin-name/css/frontend-style.css' type='text/css' media='all' />

But I found out later when I started making professional plugins for clients that there is a more correct way to do it when using WordPress.

The Right Way to Include CSS Styles in a WordPress Plugin:

The right way to include a style sheet in a custom WordPress frontend page generated by a plugin you are making is to create the style sheet in an external CSS file and include it like this:

In your plugin’s main PHP file include:

<?php

//Add frontend styles for the calendar page:
$pluginURL = plugins_url(“”,__FILE__);
$CSSURL = “$pluginURL/CSS/frontend-style.css”;//change to your filename and path
wp_register_style( ‘frontend_CSS’, $CSSURL);

?>

Then,  wherever you want your style to show up, include this:

wp_enqueue_style(‘frontend_CSS’);

I include the wp_enqueue_style function call write after wp_head normally in my custom page’s header.

I normally like to have a folder inside my main plugin folder named “CSS” or “style” where I put all my CSS style sheets for the plugin. You can see I used “CSS” in the above example. You would of course alter the URL according to the folder you placed the CSS file in. The plugins_url function used with the __FILE__ definition as the second parameter will give the full URL to the plugin when it is called within the main plugin file. I normally name the main plugin file after the plugin name or sometimes i name it index.php, but regardless, the code would be the same as long as it is within the main plugin file.

In the abov example my style sheet was named frontend-style.css, yours could be named anything you like.

Leave a Reply

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