PHPackages                             slswc/client - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Authentication &amp; Authorization](/categories/authentication)
4. /
5. slswc/client

ActiveLibrary[Authentication &amp; Authorization](/categories/authentication)

slswc/client
============

SDK for WordPress plugins and themes to check updates, manage licenses, and enforce DRM against an SLSWC-powered license server.

1.0.0(2w ago)051[4 issues](https://github.com/slswc/client/issues)GPL-2.0-or-laterPHPPHP &gt;=7.4

Since Feb 22Pushed 2w ago3 watchersCompare

[ Source](https://github.com/slswc/client)[ Packagist](https://packagist.org/packages/slswc/client)[ RSS](/packages/slswc-client/feed)WikiDiscussions master Synced 1w ago

READMEChangelog (1)DependenciesVersions (3)Used By (0)

SLSWC Client SDK
================

[](#slswc-client-sdk)

PHP SDK for WordPress plugins and themes to check for updates, manage licenses, and enforce DRM against an SLSWC-powered license server.

Installation
------------

[](#installation)

```
composer require slswc/client
```

Usage
-----

[](#usage)

### Plugin Integration

[](#plugin-integration)

```
use SLSWC\Client\Plugin;

add_action( 'plugins_loaded', function () {
    $client = Plugin::get_instance(
        'https://your-license-server.com/',
        __FILE__,
        array(
            'license_key' => get_option( 'my_plugin_license_key', '' ),
        )
    );
    $client->init_hooks();
}, 11 );
```

### Theme Integration

[](#theme-integration)

```
use SLSWC\Client\Theme;

add_action( 'after_setup_theme', function () {
    $theme = Theme::get_instance(
        'https://your-license-server.com/',
        WP_CONTENT_DIR . '/themes/my-theme',
        array(
            'license_key' => get_option( 'my_theme_license_key', '' ),
        )
    );
    $theme->init_hooks();
} );
```

### Plugin Headers

[](#plugin-headers)

Add SLSWC headers to your plugin's main file:

```
/**
 * Plugin Name: My Plugin
 * Version:     1.0.0
 * Text Domain: my-plugin
 *
 * SLSWC:                    plugin
 * SLSWC Documentation URL:  https://example.com/docs
 * SLSWC Compatible To:      6.9
 */
```

### DRM (Optional)

[](#drm-optional)

```
$client = Plugin::get_instance(
    'https://your-license-server.com/',
    __FILE__,
    array(
        'license_key' => get_option( 'my_plugin_license_key', '' ),
        'drm' => array(
            'enabled'      => true,
            'product_name' => 'My Plugin',
        ),
    )
);
```

Multi-consumer safety
---------------------

[](#multi-consumer-safety)

Multiple plugins and themes on the same WordPress install can embed this SDK independently. Each consumer receives its own isolated `Plugin` / `Theme` / `ApiClient` instance, keyed internally by:

- `Plugin::get_instance( $url, $base_file, $args )` — keyed by `$base_file` (the consumer's main plugin file path).
- `Theme::get_instance( $url, $base_file, $args )` — keyed by `$base_file` (the consumer's theme directory path).
- `ApiClient::get_instance( $url, $text_domain )` — keyed by `$text_domain`.

`text_domain`, DRM option keys (`_drm_*`), `LicenseDetails` option key (`_license_details`), DRM admin notice hooks, and scheduled license-check cron events therefore stay isolated across consumers. There is no shared mutable state between two consumers on the same site.

Consumers are expected to pass a stable `$base_file` (a plugin's main `__FILE__` is ideal) and a unique `text_domain` per product. Reusing the same `text_domain` across two consumers will share a registry slot and is unsupported.

Documentation
-------------

[](#documentation)

Full integration guides: [licenseserver.io/documentation](https://licenseserver.io/documentation)

License
-------

[](#license)

GPL-2.0-or-later

###  Health Score

43

—

FairBetter than 89% of packages

Maintenance97

Actively maintained with recent releases

Popularity6

Limited adoption so far

Community13

Small or concentrated contributor base

Maturity50

Maturing project, gaining track record

 Bus Factor1

Top contributor holds 80.8% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Unknown

Total

1

Last Release

16d ago

### Community

Maintainers

![](https://www.gravatar.com/avatar/496ad647ba61b4b8ff00583a3bf12388b1e73e68b3b60be7319c14ce641f38f0?d=identicon)[mahlamusa](/maintainers/mahlamusa)

---

Top Contributors

[![mahlamusa](https://avatars.githubusercontent.com/u/12428583?v=4)](https://github.com/mahlamusa "mahlamusa (122 commits)")[![digitalchild](https://avatars.githubusercontent.com/u/909468?v=4)](https://github.com/digitalchild "digitalchild (28 commits)")[![Mrlunsuper](https://avatars.githubusercontent.com/u/29702044?v=4)](https://github.com/Mrlunsuper "Mrlunsuper (1 commits)")

---

Tags

wordpresssdkupdateslicensing

### Embed Badge

![Health badge](/badges/slswc-client/health.svg)

```
[![Health](https://phpackages.com/badges/slswc-client/health.svg)](https://phpackages.com/packages/slswc-client)
```

###  Alternatives

[daggerhart/openid-connect-generic

OpenID Connect generic WordPress plugin.

30782.3k1](/packages/daggerhart-openid-connect-generic)[symfonycorp/connect

SymfonyConnect SDK

9246.3k2](/packages/symfonycorp-connect)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
