Action Hooks

SudoWorkspace supports action and filter hooks throughout the system, allowing you to extend functionality or modify data without editing core files.

All your custom functions should be added inside:

application/helpers/my_functions_helper.php
application/helpers/my_functions_helper.php
application/helpers/my_functions_helper.php

Before adding code to my_functions_helper.php , make sure that development mode is enabled. This will help you see PHP errors and deprecation warnings.

my_functions_helper.php

Hooks in Version 2.3.0 and Above

From version 2.3.0 , SudoWorkspace introduced a new hook system similar to WordPress.

Available Functions

hooks()->add_action($tag, $callback, $priority = 10, $accepted_args = 1);
hooks()->add_filter($tag, $callback, $priority = 10, $accepted_args = 1);
hooks()->do_action($tag, $arg = '');
hooks()->apply_filters($tag, $value, $additionalParams = []);
hooks()->add_action($tag, $callback, $priority = 10, $accepted_args = 1);
hooks()->add_filter($tag, $callback, $priority = 10, $accepted_args = 1);
hooks()->do_action($tag, $arg = '');
hooks()->apply_filters($tag, $value, $additionalParams = []);
hooks()->add_action($tag, $callback, $priority = 10, $accepted_args = 1);
hooks()->add_filter($tag, $callback, $priority = 10, $accepted_args = 1);
hooks()->do_action($tag, $arg = '');
hooks()->apply_filters($tag, $value, $additionalParams = []);

Add Action

Registers a callback function to a specific action hook.

Syntax:

hooks()->add_action($tag, $callback, $priority = 10, $accepted_args = 1);
hooks()->add_action($tag, $callback, $priority = 10, $accepted_args = 1);
hooks()->add_action($tag, $callback, $priority = 10, $accepted_args = 1);

Parameters:

$tag
$callback
$priority
$accepted_args

Example:

function my_after_client_added(int $clientId): void
{
    // Perform any action after a client is added
    log_activity('New client added: ' . $clientId);
}

hooks()->add_action('after_client_added', 'my_after_client_added');

function my_after_client_added(int $clientId): void
{
    // Perform any action after a client is added
    log_activity('New client added: ' . $clientId);
}

hooks()->add_action('after_client_added', 'my_after_client_added');

function my_after_client_added(int $clientId): void
{
    // Perform any action after a client is added
    log_activity('New client added: ' . $clientId);
}

hooks()->add_action('after_client_added', 'my_after_client_added');

This example executes after a client is added to the system. No return value is expected — you simply perform an action.

Add Filter

Registers a callback to modify data passed through a filter hook.

Syntax:

hooks()->add_filter($tag, $callback, $priority = 10, $accepted_args = 1);
hooks()->add_filter($tag, $callback, $priority = 10, $accepted_args = 1);
hooks()->add_filter($tag, $callback, $priority = 10, $accepted_args = 1);

Parameters:

$tag
$callback
$priority
$accepted_args

Example:

function my_before_client_added(array $data): array
{
    if ($data['company'] === 'Test') {
        $data['company'] = '';
    }

return $data; }

hooks()->add_filter('before_client_added', 'my_before_client_added');

function my_before_client_added(array $data): array
{
    if ($data['company'] === 'Test') {
        $data['company'] = '';
    }

return $data; }

hooks()->add_filter('before_client_added', 'my_before_client_added');

function my_before_client_added(array $data): array
{
    if ($data['company'] === 'Test') {
        $data['company'] = '';
    }

return $data; }

hooks()->add_filter('before_client_added', 'my_before_client_added');

This example filters the $data before a client is added, changing the company name if it equals “ Test “.

$data

Do Action

Executes all functions attached to a specific action hook .

Syntax:

hooks()->do_action($tag, $arg = '');
hooks()->do_action($tag, $arg = '');
hooks()->do_action($tag, $arg = '');

You’ll typically use this inside core or module code to trigger hooks:

hooks()->do_action('after_client_added', $clientId);
hooks()->do_action('after_client_added', $clientId);
hooks()->do_action('after_client_added', $clientId);

Apply Filter

Executes all functions attached to a filter hook and returns the modified value.

Syntax:

$value = hooks()->apply_filters($tag, $value, $additionalParams = []);
$value = hooks()->apply_filters($tag, $value, $additionalParams = []);
$value = hooks()->apply_filters($tag, $value, $additionalParams = []);

Example (inside core or module code):

$data = hooks()->apply_filters('before_client_added', $data);
$data = hooks()->apply_filters('before_client_added', $data);
$data = hooks()->apply_filters('before_client_added', $data);

Hooks Prior to Version 2.3.0

Before 2.3.0, hooks were handled with the simpler global functions add_action() and add_filter() .

add_action()
add_filter()

Example: Action Hook

function callback_after_client_added_insert_to_local_database($id)
{
    $clientid = $id;

// perform any action with $clientid }

add_action('after_client_added', 'callback_after_client_added_insert_to_local_database');

function callback_after_client_added_insert_to_local_database($id)
{
    $clientid = $id;

// perform any action with $clientid }

add_action('after_client_added', 'callback_after_client_added_insert_to_local_database');

function callback_after_client_added_insert_to_local_database($id)
{
    $clientid = $id;

// perform any action with $clientid }

add_action('after_client_added', 'callback_after_client_added_insert_to_local_database');

Example: Filter Hook

function callback_before_client_added_check_company($data)
{
    if ($data['company'] == 'Test') {
        $data['company'] = '';
    }

return $data; }

add_action('before_client_added', 'callback_before_client_added_check_company');

function callback_before_client_added_check_company($data)
{
    if ($data['company'] == 'Test') {
        $data['company'] = '';
    }

return $data; }

add_action('before_client_added', 'callback_before_client_added_check_company');

function callback_before_client_added_check_company($data)
{
    if ($data['company'] == 'Test') {
        $data['company'] = '';
    }

return $data; }

add_action('before_client_added', 'callback_before_client_added_check_company');

hooks()->add_action()
void
hooks()->add_filter()

Need a new hook? If you’d like a new hook added to SudoWorkspace, open a support ticket and describe your use case.