Display Table Body
apply_filters( 'vikrestaurants_display_{$page}_table_td', mixed $body, array $rows, JView $view, array $config )
Fires while displaying the table body of a specific entity.
Description
This hook is triggered within the list pages of certain sections of the plugin. It is possible to use this hook to include additional columns within list tables.
DO NOT include td
tags because they are automatically added by the system. Lean on data-id
attribute for individual styling.
Each value of the resulting array must declare an array containing the HTML for each column within the list.
The dynamic portion of the hook name, $page
, refers to the name of the page calling the hook. This means that, for example, the restaurant reservations page will trigger an hook called vikrestaurants_display_reservations_table_td
.
IMPORTANT NOTE: not all the pages trigger this hook. Before to start coding a plugin, you should make sure that the page supports that hook, by checking whether the onDisplayTableColumns()
method is used. This can be done by accessing the page at the path:
/wp-content/plugins/vikrestaurants/admin/views/{$page}/tmpl/default.php
(back-end pages)
Parameters
- $body
-
(array|null) An associative array containing the new columns to include. The key of the array should be a unique identifier to correctly pair the body with the head. The value of the array should be an array containing all the values to display (one per row).
At the first hook execution, the argument may be a
null
value. - $rows
-
(array) An array of fetched records.
- $page
-
(JView) The page instance holding the record details.
- $config
-
(array) An associative array of options.
Example
The example below displays the stay time of the reservations under the related list.
/**
* Trigger hook to allow the plugins to include custom <TD> within the table.
* The hook must return an associative array where the key is the identifier
* of the column and the value is the HTML to use.
*
* @param mixed $body An associative array of columns.
* @param array $rows The fetched elements.
* @param mixed $view The current page instance.
* @param array $config A configuration array.
*/
add_filter('vikrestaurants_display_reservations_table_td', function($body, $rows, $view, $config) {
if (!$body) {
$body = [];
}
// include "Stay Time" column
$body['staytime'] = [];
// scan fetched rows
foreach ($rows as $row)
{
// get custom time of stay or use the default one
$stayTime = $row->stay_time ?: VREFactory::getConfig()->getUint('averagetimestay');
// convert integer into a readable string
$stayTime = sprintf(
__('%d minutes', 'vikrestaurants'),
$stayTime
);
// append value to the current row of the table body
$body['staytime'][] = $stayTime;
}
return $body;
}, 10, 4);
Changelog
Version | Description |
---|---|
1.3 | Introduced. |