diff options
-rw-r--r-- | .gitignore | 1 | ||||
-rw-r--r-- | composer.json | 20 | ||||
-rw-r--r-- | src/UsesWordPressScripts.php | 71 |
3 files changed, 92 insertions, 0 deletions
diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..61ead86 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +/vendor diff --git a/composer.json b/composer.json new file mode 100644 index 0000000..864507c --- /dev/null +++ b/composer.json @@ -0,0 +1,20 @@ +{ + "name": "dweipert/wp-enqueue-assets", + "type": "library", + "description": "Helper functions to use with @wordpress/scripts js module", + "license": "GPL-2.0-or-later", + "authors": [ + { + "name": "Daniel Weipert", + "email": "code@drogueronin.de" + } + ], + "require": { + "php": ">=7.4" + }, + "autoload": { + "psr-4": { + "Dweipert\\WpEnqueueAssets\\": "src/" + } + } +} diff --git a/src/UsesWordPressScripts.php b/src/UsesWordPressScripts.php new file mode 100644 index 0000000..e93a01e --- /dev/null +++ b/src/UsesWordPressScripts.php @@ -0,0 +1,71 @@ +<?php + +namespace Dweipert\WpEnqueueAssets; + +trait UsesWordPressScripts +{ + /** + * @var string + */ + protected $buildDir = 'build'; + + /** + * @param string $handle + * @param string $asset + * @param array $deps + * @param bool $inFooter + */ + public function enqueueScript($handle, $asset, $deps = [], $inFooter = false) + { + $assetBaseName = pathinfo($asset, PATHINFO_FILENAME); + $meta = $this->assetsMeta($assetBaseName); + + wp_enqueue_script( + $handle, + $this->assetsUrl($asset), + array_replace($meta['dependencies'] ?? [], $deps), + $meta['version'] ?? false, + $inFooter + ); + } + + /** + * @param string $handle + * @param string $asset + * @param array $deps + * @param string $media + */ + public function enqueueStyle($handle, $asset, $deps = [], $media = 'all') + { + $assetBaseName = pathinfo($asset, PATHINFO_FILENAME); + $meta = $this->assetsMeta($assetBaseName); + + wp_enqueue_style( + $handle, + $this->assetsUrl($asset), + $deps, + $meta['version'] ?? false, + $media + ); + } + + /** + * @param string $asset + * + * @return string + */ + public function assetsUrl($asset) + { + return get_stylesheet_directory_uri() . "/{$this->buildDir}/$asset"; + } + + /** + * @param string $asset + * + * @return mixed + */ + public function assetsMeta($asset) + { + return include get_stylesheet_directory() . "/{$this->buildDir}/$asset.asset.php"; + } +} |