jesspinkman/wp-file

Fetch file urls and paths for wordpress

0.0.4 2021-01-11 10:21 UTC

This package is auto-updated.

Last update: 2024-04-21 10:08:10 UTC


README

2 Utility classes to get file urls and paths, with versioning

Installation

composer require jesspinkman/wpfile

Use

three main functions:

getUrl()
getPath()
getVersion() // file modification time

For themes

No need to set the root folder of your theme, use it right away:

use WPFile\ThemeFile;

// load a js script
add_action('wp_enqueue_scripts', 'load_script');

function load_script() {
  $file = new ThemeFile('assets/js/my-script.js');
  \wp_enqueue_script(
      'my-script',          // script handle name
      $file->getURL(),      // file url (eg: https://my-website.com/.../.../my-theme/assets/js/my-scripts.js)
      [],                   // empty dependencies 
      $file->getVersion()   // file modification timestamp (eg: 1621496690)
  );
  // generated url https://my-website.com/.../.../my-plugin/assets/js/my-scripts.js?ver=1621496690
}

For Plugins

in your plugin root file, set the root path

<?php

/**
 *plugin name: your-plugin
 * ...
 */

use WPFile\PluginFile;

require __DIR__ . '/vendor/autoload.php';

PluginFile::setRoot(__FILE__); // or set another root folder

then anywhere in your plugin:

use WPFile\PluginFile;

// load a js script
add_action('wp_enqueue_scripts', 'load_script');

function load_script() {
  $file = new WPFile('assets/js/my-script.js');
  \wp_enqueue_script(
      'my-script',          // script handle name
      $file->getURL(),      // file url (eg: https://my-website.com/.../.../my-plugin/assets/js/my-scripts.js)
      [],                   // empty dependencies 
      $file->getVersion()   // file modification timestamp (eg: 1621496690)
  );
  // generated url https://my-website.com/.../.../my-plugin/assets/js/my-scripts.js?ver=1621496690
}


// load a specific php template if page is product archive page
add_filter('template_include', 'hook_template');

function hook_template(string $template) {
    if (\is_post_type_archive('products')) {
    $template = new PluginFile('templates/products/archive.php');
        return $template->getPath(); //file path (example: /var/www/html/.../.../my-plugin/templates/products/archive.php)
    } else {
        return $template;
    }
}