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
From version 2.3.0 , SudoWorkspace introduced a new hook system similar to WordPress.
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 = []);
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.
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
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);
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);
Before 2.3.0, hooks were handled with the simpler global functions add_action() and add_filter() .
add_action()
add_filter()
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');
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.