diff --git a/core/includes/common.inc b/core/includes/common.inc index 97afe45..51d1aaa 100644 --- a/core/includes/common.inc +++ b/core/includes/common.inc @@ -4005,6 +4005,15 @@ function drupal_render(&$elements, $is_recursive_call = FALSE) { $suffix = isset($elements['#suffix']) ? $elements['#suffix'] : ''; $elements['#markup'] = $prefix . $elements['#children'] . $suffix; + + // Collect any post_render_cache callbacks that were added during theming. + if (isset($elements['#cache']) || !$is_recursive_call) { + $post_render_cache = drupal_render_collect_post_render_cache($elements); + if ($post_render_cache) { + $elements['#post_render_cache'] = $post_render_cache; + } + } + // Cache the processed element if #cache is set. if (isset($elements['#cache'])) { drupal_render_cache_set($elements['#markup'], $elements); @@ -4020,11 +4029,7 @@ function drupal_render(&$elements, $is_recursive_call = FALSE) { // Only the case of a cache hit when #cache is enabled, is not handled here, // that is handled earlier in drupal_render(). if (!$is_recursive_call) { - $post_render_cache = drupal_render_collect_post_render_cache($elements); - if ($post_render_cache) { - $elements['#post_render_cache'] = $post_render_cache; - _drupal_render_process_post_render_cache($elements); - } + _drupal_render_process_post_render_cache($elements); } $elements['#printed'] = TRUE;