How can we help?

Search for answers or browse our knowledge base.

Table of Contents

Hooks for custom activity log extensions for WP Activity Log

When using WP Activity Log, you can develop your own activity log extension. You might need one to keep a log of changes that take place on a custom-built theme or plugin. Or you might want to keep a log of changes on a plugin that we do not support yet.

Building an activity log add-on for WP Activity Log is very simple. In this page we list the hooks you need to use when developing your own activity logs add-on to:

  • declare new event type and object (refer to activity log metadata for more information on what these are),
  • change the text and URL of the link to post editor in the event message

For more information and detailed code examples of how to develop custom activity log add-ons refer to the custom activity log events documentation.

Event types and objects hooks

Adding new event types

Filter: wsal_event_type_data
Purpose:
Use this filter to add a new event type in the activity log. This filter is passed as an array where the key is the event handle, and the value is the text to be shown in lists.

Code example

/*
add_filter( 'wsal_event_type_data', 'myCustomEventTypes', 10, 1 );
     function myCustomEventTypes( $event_types ) {
     $event_types['new-event'] = __( 'New Event', 'your-textdomian' );
       $event_types['other-event'] = __( 'Other Event', 'your-textdomian' );
     asort( $event_types ); // sort the items so they appear in lists alphabetically
     return $event_types;
}

Adding new objects

Filter: wsal_event_objects
Purpose: The same process we have for event types applies to new objects. Use this  filter to add new objects to lists. Use the wsal_event_object_text filter to add the display text for the new objects used in other places, such as the viewer.

Code example

/*
add_filter( 'wsal_event_objects', 'myCustomEventObjects', 10, 1 );
    function myCustomEventObjects( $objects ) {
    $objects['new-object'] = __( 'New Object', 'your-textdomian' );
	$objects['another-object'] = __( 'Another Object', 'your-textdomian' );
    asort( $objects ); // sort the items so they appear in lists alphabetically
    return $objects;
}

When the plugin reports a change in a post or a user profile, it adds a link in the event message for the user to open the post in the editor or the user profile page. Such links are highlighted in the below screenshot:

The link to the editor or user profile in the activity log message

However, in your custom activity log add-on you might be monitoring something else, such as forms, or products. In such case use the below filter to change the anchor test and URL .

Filter: wsal_link_filter

Code example

/*
/**
 * @param array $value - The URL to link to.
 * @param array $name - Custom meta name.
 * @return string
 */

function wsal_add_custom_meta_format_value( $value, $name ) {
	$check_value = (string) $value;
	if ( '%CustomMeta%' === $name ) {
		if ( 'NULL' !== $check_value ) {
			return '' . __( 'View custom item in the editor', 'wp-security-audit-log' ) . '';
		} else {
			return '';
		}
	}
	return $value;
}

add_filter( 'wsal_link_filter', 'wsal_add_custom_meta_format_value', 10, 2 );