Skip to content

Traits

Reusable behaviours that can be composed into any class via PHP traits.

Core lifecycle traits

Trait Description
Singleton get_instance() — creates one instance per class
Module Extends Singleton, calls init() once on first instantiation

Module trait

Every feature module uses Module. Implement init() to register hooks:

use Barberklingen\BasePlugin\Traits\Module;

class MyModule {
    use Module;

    public function init(): void {
        add_action('init', [$this, 'setup']);
    }
}

MyModule::get_instance(); // init() runs here, once
MyModule::get_instance(); // returns same instance, init() not called again

Endpoint traits

Trait Description
Scheduler Recurring scheduled actions with distributed lock
AjaxEndpoint wp_ajax_* / wp_ajax_nopriv_* handler
WCAPIEndpoint woocommerce_api_{action} handler