Knowledge Base/Developer Docs/Building Extensions
Developer Docs

Building Extensions

Wigmorean extensions are regular WordPress plugins that register with Connect so they appear in the catalog, respect SafeGuard, and share the Credentials Vault.

The minimum viable extension

A Wigmorean extension is just a WordPress plugin. The only thing that makes it special is how it registers with Connect.

<?php
/**
 * Plugin Name: Acme Wigmorean Extension
 * Version:     1.0.0
 */

if ( ! defined( 'ABSPATH' ) ) exit;

add_filter( 'wigmorean_connect_extensions', function( $exts ) {
    $exts['acme-extension'] = [
        'slug'        => 'acme-extension',
        'label'       => 'Acme Extension',
        'description' => 'Adds Acme-specific tooling.',
        'version'     => '1.0.0',
        'main_file'   => plugin_basename( __FILE__ ),
    ];
    return $exts;
} );

Once registered, your extension appears on the Extensions tab of Connect with its own install/activate controls.

Using the Credentials Vault

If your extension needs API keys or tokens, register a service group and read via the Vault — never get_option() in plain text:

add_filter( 'wigmorean_credentials_services', function( $services ) {
    $services['acme'] = [
        'label'  => 'Acme API',
        'fields' => [ 'api_key' => [ 'label' => 'API Key', 'required' => true ] ],
    ];
    return $services;
} );

// Read it when you need it:
$key = Wigmorean_Connect_Credentials::get( 'acme.api_key' );

Respecting SafeGuard

If your extension shouldn't run alongside another plugin (a conflict), register that:

add_filter( 'wigmorean_safeguard_conflicts', function( $conflicts ) {
    $conflicts['acme-extension'] = [
        'hard' => [ 'other-conflicting-plugin' ],  // red: block install
        'soft' => [ 'related-plugin' ],            // yellow: warn
    ];
    return $conflicts;
} );

Shipping updates

Extensions can use Connect's updater or ship their own. To use Connect's:

add_filter( 'wigmorean_connect_update_manifest', function( $manifest, $slug ) {
    if ( $slug !== 'acme-extension' ) return $manifest;
    return [
        'version'     => '1.1.0',
        'package_url' => 'https://acme.com/downloads/acme-extension-1.1.0.zip',
        'changelog'   => 'https://acme.com/changelog',
    ];
}, 10, 2 );

Connect will surface updates the same way it does for first-party products — with the auto-update toggle, SafeGuard preflight, and changelog display.

Following Wigmorean conventions

To feel native to the ecosystem, follow these conventions:

  • Prefix all functions and classes with wigmorean_ or your brand prefix
  • Hook admin pages under Wigmorean menu, not your own top-level menu
  • Use the Wigmorean admin CSS tokens (--rust, --cream, etc.) so your screens don't look out of place
  • Log significant actions to the Wigmorean activity log via do_action( 'wigmorean_activity', $event )

Need help?

Our support team responds within one business day.

Contact Support