6.x-3.x docs.php hook_views_post_execute(&$view)
7.x-3.x views.api.php hook_views_post_execute(&$view)

This hook is called right after the execute process. The query has been executed, but the pre_render() phase has not yet happened for handlers.

Adding output to the view can be accomplished by placing text on $view->attachment_before and $view->attachment_after. Altering the content can be achieved by editing the items of $view->result.


$view: The view object about to be processed.

Related topics

1 invocation of hook_views_post_execute()
view::execute in includes/view.inc
Execute the view's query.


./views.api.php, line 989
Describe hooks provided by the Views module.


function hook_views_post_execute(&$view) {
  // If there are more than 100 results, show a message that encourages the user
  // to change the filter settings.
  // (This action could be performed later in the execution process, but not
  // earlier.)
  if ($view->total_rows > 100) {
    drupal_set_message(t('You have more than 100 hits. Use the filter settings to narrow down your list.'));


purabkharat’s picture

you can use the hook using following code sample:

function test_module_views_post_execute(&$view) {
    $newResults = 'this is simple test text';
    $view->result = $newResults;

HongDong’s picture

I'm using views_post_execute() to sort the result manually, but the view I want to sort contains a pager. Each time I run the view, views_post_execute() only returns me the result of the current view page, but I need to get all view results without any limitations of the pager.
Does anybody has an idea? Thanks

shashikant_chauhan’s picture

This hook is called right after the execute process. The query has been executed.
if you are Using pager then views is adding LIMIT in its Query so you will get only limited records only.
Try to get the sorted records by using views sort criteria.
If your manual sort possible by only custom coding then you can use https://www.drupal.org/project/views_php
OR You can implement your logic using hook_views_query_alter

ranelpadon’s picture

function MY_MODULE_views_post_execute(&$view) {
  if ($view->name == 'job_distribution') {
    foreach ($view->result as $result) {
      // Replace all empty fields with the dash '-' character.
      if(empty($result->field_field_regular_job_count)) {
        $result->field_field_regular_job_count[0]['rendered']['#markup'] = '-';