English (United Kingdom)
Knowledge Base  >  Vik Appointments  >  Hooks  >  Dashboard  >  Fetch Supported Widgets

apply_filters( 'vikappointments_fetch_supported_statistics_widgets', mixed $widgets )

Fires while loading the supported widgets to display within the Dashboard and Analytics pages.


Description

This filter can be used to support additional types of widgets without having to edit any core files.

Here you should simply return the list of widgets that can be loaded within the script. Only the base name of the files have to be returned. The base name of the files to load can specify only letters, numbers and underscores.

Note: at the first execution of the hook the $widgets argument isn't an array.


Parameters

$widgets

(array|null)  The array holding the name of the external widgets to load.


Example

The example below adds support for all the widgets contained in a specific folder of a third-party plugin. Such as:

/wp-content/plugins/vikwp/widgets/

All the PHP files contained within the widgets folder of the VikWP plugin will be loaded.

/**
 * Trigger filter can be used to register external widgets to
 * extend the statistics dashboard without editing any core files.
 *
 * @param  array|null  $widgets  The array holding the widgets to load.
 */
add_filter('vikappointments_fetch_supported_statistics_widgets', function($widgets)
{
    if (!$widgets)
    {
        // first cycle of the filter, init the list of widgets
        $widgets = array();
    }

    // create base path to "widgets" folder contained within the plugin
    $base = dirname(__FILE__) . DIRECTORY_SEPARATOR . 'widgets' . DIRECTORY_SEPARATOR;

    // load all PHP files from "widgets" folder
    $files = glob($base . '*.php');

    // IMPORTANT: map the widgets to return only the base name
    $files = array_map(function($widget)
    {
        return preg_replace("/\.php$/i", '', basename($widget));
    }, $files);

    // merge existing widgets with these ones
    return array_merge($widgets, $files);
});

Changelog

Version Description
1.2 Introduced.
Last Update: 2021-09-30
Helpful?