A PHP library providing shared functionality for WordPress-based applications at Klein College (Temple University). Built on Roots Acorn to bring Laravel-style service providers, dependency injection, and Blade templating to WordPress.
- PHP 8.2+
- WordPress with Roots Acorn 5.x
composer require kleinweb/libRegister actions and filters declaratively using PHP 8 attributes:
use Kleinweb\Lib\Hooks\Attributes\Action;
use Kleinweb\Lib\Hooks\Attributes\Filter;
use Kleinweb\Lib\Support\ServiceProvider;
class MyServiceProvider extends ServiceProvider
{
#[Action('init')]
public function onInit(): void
{
// Runs on WordPress 'init' action
}
#[Filter('the_content', priority: 20)]
public function filterContent(string $content): string
{
return $content . '<p>Appended content</p>';
}
}Fluent API for defining package assets, adapted from spatie/laravel-package-tools:
use Kleinweb\Lib\Package\Package;
use Kleinweb\Lib\Package\PackageServiceProvider;
class MyPackageServiceProvider extends PackageServiceProvider
{
public function configurePackage(Package $package): void
{
$package
->name('my-package')
->hasConfigFile()
->hasViews()
->hasMigrations('create_items_table')
->hasCommands(MyCommand::class);
}
}Helpers for WordPress multisite environments:
use Kleinweb\Lib\Tenancy\Site;
Site::name(); // Current site name
Site::url(); // Site URL as League\Uri instance
Site::host(); // Current hostname
Site::isPrimaryHost(); // Check if on main site
Site::originalHost(); // Get original domain from site metaMonolog handler for Simple History plugin:
use Kleinweb\Lib\Log\SimpleHistoryHandler;
use Monolog\Logger;
$logger = new Logger('my-channel');
$logger->pushHandler(new SimpleHistoryHandler());This project uses Nix for reproducible development environments and just for task automation.
# Enter development shell (if using Nix)
nix develop
# Or use direnv
direnv allow
# Run all checks
just check
# Lint only
just lint
# Auto-fix issues
just fix
# Individual tools
composer phpstan # Static analysis (level 8)
composer phpcs # Code sniffer
composer phpcbf # Auto-fix code sniffer issuesGPL-3.0-or-later