themehybrid / hybrid-core

Official repository for the Hybrid Core WordPress development framework.
GNU General Public License v2.0
687 stars 143 forks source link

5.0: `Template\Hierarchy::templateHierarchy()` could use `array_unique()` to avoid hierarchy duplicates #164

Closed lkraav closed 5 years ago

lkraav commented 5 years ago

https://themehybrid.slack.com/archives/C8T1S6HDG/p1542558595427400

When Query Monitor plugin is activated, it also fetches the full hierarchy, and causes templateHierarchy() to do 2 trips.

array_merge() alone blindly merges results, and we end up w/ hierarchy like:

??\Hybrid\Template\hierarchy()
?array (
  0 => 'front-page',
  1 => 'single-page-456654',
  2 => 'page-456654',
  3 => 'single-page-data-driven-marketing-courses',
  4 => 'page-data-driven-marketing-courses',
  5 => 'single-page',
  6 => 'page',
  7 => 'single',
  8 => 'singular',
  9 => 'index',
  10 => 'front-page',
  11 => 'single-page-456654',
  12 => 'page-456654',
  13 => 'single-page-data-driven-marketing-courses',
  14 => 'page-data-driven-marketing-courses',
  15 => 'single-page',
  16 => 'page',
  17 => 'single',
  18 => 'singular',
  19 => 'index',
)

If we do array_unique( array_merge() ), we get a better result:

‌‌\Hybrid\Template\hierarchy()
‌array (
  0 => 'single-page-182144',
  1 => 'page-182144',
  2 => 'single-page-all-access',
  3 => 'page-all-access',
  4 => 'single-page',
  5 => 'page',
  6 => 'single',
  7 => 'singular',
  8 => 'index',
)