wpsocio/wp-utils

Utilities for WordPress plugins and themes

v1.0.6 2024-10-15 09:09 UTC

This package is auto-updated.

Last update: 2024-12-15 09:31:45 UTC


README

Utilities for WordPress plugins and themes.

Usage

composer require wpsocio/wp-utils
require_once __DIR__ . '/autoload.php';

WPSocio\WPUtils\Options

Allows an easy access to plugin or theme options/settings which are in the form of an array, no matter how deep it is.

$option_key    = 'option_name_here';
$store_as_json = false

$options = new \WPSocio\WPUtils\Options( $option_key, $store_as_json );

$options->get( 'some_key' ); // false
$options->get( 'some_key', 'default_value' ); // 'default_value'

$options->set( 'some_key', 'some_value' );
$options->get( 'some_key' ); // 'some_value'

// Updates the value in the database if $option_key is provided
$options->set_data( [
    'first' => 'some_value',
    'second' => [
        'a1' => 'a1-value',
        'a2' => 'a2-value',
    ],
] );

$options->get_path( 'second.a2' ); // 'a2-value'

WPSocio\WPUtils\Requirements

Checks if the environment meets the requirements.

$plugin_file = '/path/to/plugin/file.php';

$requirements = new \WPSocio\WPUtils\Requirements( $plugin_file );

if ( $requirements->satisfied() ) {
    // Do something
}

$details = $requirements->get_env_details();

/*
[
    'data' => [
        'PHP' => [
            'version' => '8.0.0',
            'min'     => '7.0',
        ],
        'WP'  => [
            'version' => '5.3',
            'min'     => '5.3',
        ],
    ],
    'satisfied' => true,
]
*/

WPSocio\WPUtils\ViteWPReactAssets

Manage the assets for a React app built with Vite using @wpsocio/vite-wp-react npm package.

$assets_dir = untrailingslashit( plugin_dir_path( __FILE__ ) ) . '/assets/build';
$assets_url = untrailingslashit( plugins_url( '', __FILE__ ) ) . '/assets/build';

$assets = new \WPSocio\WPUtils\ViteWPReactAssets( $assets_dir, $assets_url );

$entry = 'js/settings/index.tsx';

$assets->enqueue(
    $entry,
    [
        'handle'              => 'some-js-handle',
        'script-dependencies' => [ 'wp-element', 'wp-i18n' ],
        'style-dependencies'  => ['wp-components'],
    ]
);

// OR

[ $script_handle, $style_handles ] = $assets->register(
    $entry,
    [
        'handle'              => 'some-js-handle',
        'script-dependencies' => [ 'wp-element', 'wp-i18n' ],
        'style-dependencies'  => ['wp-components'],
    ]
);

// Later on
$assets->enqueue( $entry );
// or
wp_enqueue_script( $script_handle );
foreach ( $style_handles as $style_handle ) {
    wp_enqueue_style( $style_handle );
}

Requirements

  • PHP >= 8.0
  • WP >= 6.4