Transient for main navigation

Unbelievable how many queries this thing needs...
This commit is contained in:
Tetrakern 2023-08-04 13:48:00 +02:00
parent bfb78b7615
commit 2770f74168
5 changed files with 45 additions and 10 deletions

View File

@ -589,7 +589,8 @@ function fictioneer_purge_cache_transients( $post_id ) {
fictioneer_delete_transients_like( 'fictioneer_shortcode' );
}
// Footer menu
// Menus
delete_transient( 'fictioneer_main_nav_menu' );
delete_transient( 'fictioneer_footer_menu' );
}
add_action( 'save_post', 'fictioneer_purge_cache_transients' );

View File

@ -91,6 +91,7 @@ if ( ! function_exists( 'fictioneer_footer_menu_row' ) ) {
$menu = str_replace( 'class="', 'class="footer__menu-list-item ', $menu );
$menu = str_replace( 'current_page_item', '', $menu );
$menu = str_replace( 'current-menu-item', '', $menu );
$menu = str_replace( 'aria-current="page"', '', $menu );
$menu = preg_replace( '/<\/li>\s*<li/', '</li><li', $menu );
set_transient( 'fictioneer_footer_menu', $menu );

File diff suppressed because one or more lines are too long

View File

@ -24,14 +24,27 @@
<div class="main-navigation__wrapper">
<div class="main-navigation__left">
<?php
wp_nav_menu(
array(
'theme_location' => 'nav_menu',
'menu_class' => 'main-navigation__list',
'container' => '',
'items_wrap' => '<ul id="%1$s" class="%2$s">%3$s</ul>'
)
);
$menu = get_transient( 'fictioneer_main_nav_menu' );
if ( empty( $menu ) ) {
$menu = wp_nav_menu(
array(
'theme_location' => 'nav_menu',
'menu_class' => 'main-navigation__list',
'container' => '',
'items_wrap' => '<ul id="%1$s" class="%2$s">%3$s</ul>',
'echo' => false
)
);
$menu = str_replace( 'current_page_item', '', $menu );
$menu = str_replace( 'current-menu-item', '', $menu );
$menu = str_replace( 'aria-current="page"', '', $menu );
set_transient( 'fictioneer_main_nav_menu', $menu );
}
echo $menu;
?>
</div>
<div class="main-navigation__right">

View File

@ -1978,3 +1978,23 @@ fcn_theBody.addEventListener('click', event => {
}
}
});
// =============================================================================
// SCROLL TO ANCHORS
// =============================================================================
/**
* Mark currently active menu item
*
* @since 5.5.0
*/
function fcn_markCurrentMenuItem() {
_$$(`.menu-item > [data-nav-object-id="${fcn_theBody.dataset.postId}"]`).forEach(element => {
element.setAttribute('aria-current', 'page');
element.closest('.menu-item').classList.add('current-menu-item');
});
}
// Initialize
fcn_markCurrentMenuItem();