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"; +    } +} | 
