# I need a better way to add css per each page on wordpress

I just started to use WordPress to start building a website, but as I need to use the get_header() function to retrieve the <head> content and I have a very large project, I wanted to put a CSS file depending on the page that is being displayed. After a few tries I came up with a solution, but I think that I can do it in a better way and I need your help to optimize it.

Here is my PHP snippet that goes into the functions.php file:

function website_files_per_page() {
$pagelist = get_pages();$index = sizeof($pagelist); while ($index --) {
$pagename =$pagelist[$index]->post_name; if (is_page($pagename)){
$styleName = "website_".$pagename."_styles";
$styleDir = get_theme_file_uri("/style/".$pagename.".css");
wp_enqueue_style($styleName,$styleDir);
break;
}
}
}

• Welcome to Code Review! I notice the performance tag is used - is there a concern about execution time here being higher than desired? – Sᴀᴍ Onᴇᴌᴀ Oct 19 '20 at 21:31
• I'd like my code to be O(1) not O(n) – maneroto Oct 19 '20 at 21:59

## Simpler approach

I haven’t tested this but based on this SO answer using global $post and $post->page_title to set $pagename should allow you to remove the loop. function website_files_per_page() { global$post;
$pagename =$post->post_title;
if ($pagename) { return; //no page name }$styleName = "website_".$pagename."_styles";$styleDir = get_theme_file_uri("/style/".$pagename.".css"); wp_enqueue_style($styleName, $styleDir); } add_action("wp_print_styles", "website_files_per_page");  That would allow the code to run in $$\O(1)\$$ time instead of $$\O(n)\$$. ## Let PHP handle the iteration If the suggestion to use $post doesn’t work, you may be able to change the while loop to a foreach. foreach provides an easy way to iterate over arrays:

foreach ($pagelist as$post) {
$pagename =$post->post_name;
if (is_page($pagename)) { ...  With this approach there is no need to initialize and update a counter (e.g. $index) to dereference elements in the array.

If there was a need to access the index/counter variable the second syntax can be used for that:

foreach ($pagelist as$index => \$post) {
`
• This works pretty awesome and does what I wanted, reduce the time to O(1). Thanks! – maneroto Jan 8 at 23:11