2

I'm receiving the following filemtime() warning:

Warning: filemtime(): stat failed for https://testing.local/wp-content/plugins/test-social-icons/css/style.css in /app/public/wp-content/plugins/zoo-social-icons/zoo-social-icons.php on line 29

Here's how I'm enqueuing the stylesheet within my plugin:

function test_styles_scripts() {
   $dir = plugin_dir_url(__FILE__);
   wp_enqueue_style( 'test-style', $dir . 'css/style.css', array(), filemtime( $dir . 'css/style.css' ) );
}
add_action( 'wp_enqueue_scripts', 'test_styles_scripts' );

The stylesheet is correctly enqueuing. Why am I getting this warning?

2
  • 3
    Sally's comment here was that the first plugin_dir_path() needed to be plugin_dir_url(). The second one, for filemtime(), still needs to be plugin_dir_path(), because filemtime() requires a path, not a URL, but the browser requires a URL, which is what the first one is for. Commented Mar 11, 2020 at 13:57
  • Boom, that works! Thank you @JacobPeattie. Please post your answer and I'll mark it as accepted.
    – Sam
    Commented Mar 11, 2020 at 14:06

2 Answers 2

1

Restating the answer from @JacobPeattie in the comments above.

filemtime() requires a path, not a URL

Therefore use plugin_dir_path(__FILE__).

The full string for properly printing the cache-busting part of the version number at the end of the asset would be filemtime( plugin_dir_path(__FILE__)

1

The filemtime() function in PHP expects a filesystem path, not a URL. However, in your code, you're passing a URL to filemtime(), which causes the stat failed warning.

To fix this issue, you need to use the correct function to get the filesystem path, which is plugin_dir_path(). This function will give you the path to the plugin directory in the filesystem, which you can then use with filemtime().

how you can fix your code:

Use plugin_dir_path() to get the filesystem path. Use plugin_dir_url() to get the URL for enqueuing the stylesheet.

Try Code

function test_styles_scripts() {
   // Get the URL of the plugin directory
   $dir_url = plugin_dir_url(__FILE__);
   
   // Get the filesystem path of the plugin directory
   $dir_path = plugin_dir_path(__FILE__);
   
   // Enqueue the stylesheet with the file modification time as the version
   wp_enqueue_style('test-style', $dir_url . 'css/style.css', array(), filemtime($dir_path . 'css/style.css'));
}
add_action('wp_enqueue_scripts', 'test_styles_scripts');

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.