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 &lt;head&gt; 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]-&gt;post_name;
        if (is_page($pagename)){
            $styleName = &quot;website_&quot;.$pagename.&quot;_styles&quot;;
            $styleDir = get_theme_file_uri(&quot;/style/&quot;.$pagename.&quot;.css&quot;);
            wp_enqueue_style($styleName, $styleDir);
            break;
        }
    }
}
add_action(&quot;wp_print_styles&quot;, &quot;website_files_per_page&quot;);
Simpler approach
I haven’t tested this but based on this SO answer using global $post and $post-&gt;page_title to set $pagename should allow you to remove the loop.
function website_files_per_page() {
    global $post;
    $pagename = $post-&gt;post_title;
    if ($pagename) {
        return; //no page name
    }
    $styleName = &quot;website_&quot;.$pagename.&quot;_styles&quot;;
    $styleDir = get_theme_file_uri(&quot;/style/&quot;.$pagename.&quot;.css&quot;);
    wp_enqueue_style($styleName, $styleDir);
}
add_action(&quot;wp_print_styles&quot;, &quot;website_files_per_page&quot;);

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-&gt;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 =&gt; $post) {