Skip to content

Repository files navigation

ThemePlate Cleaner

Usage

add_action( 'init', array( 'ThemePlate\Cleaner', 'init' ) );
add_action( 'after_setup_theme', function() {
add_theme_support( 'tpc_wp_head' );
add_theme_support( 'tpc_emoji_detection' );
add_theme_support( 'tpc_query_strings' );
add_theme_support( 'tpc_dependency_tag' );
add_theme_support( 'tpc_unnecessary_class' );
add_theme_support( 'tpc_extra_styles' );
add_theme_support( 'tpc_embed_wrap' );
add_theme_support( 'tpc_nav_walker' );
add_theme_support( 'tpc_archive_views' );
add_theme_support( 'tpc_default_views' );
add_theme_support( 'tpc_footer_scripts' );
} );

Custom clean navwalker

Simplest (need custom classes)

class Clean_Navbar extendsThemePlate\NavWalker {
publicarray$classes = array(
'sub-menu' => 'sub-menu-list',
'has-sub' => 'has-children',
'active' => 'current-item',
'item' => 'menu-item',
'depth' => 'level-',
);
}

Bootstrap Navbar (with dropdowns)

class Boostrap_Navbar extendsThemePlate\NavWalker {
publicarray$classes = array(
'sub-menu' => 'dropdown-menu',
'has-sub' => 'dropdown',
'active' => '',
'item' => 'nav-item',
'depth' => '',
);
publicfunctionattributes( $atts, $item, $args ) {
$atts['class'] = 'nav-link';
if ( $args->walker->has_children ) {
$atts['class'] .= ' dropdown-toggle';
$atts['data-bs-toggle'] = 'dropdown';
$atts['aria-haspopup'] = 'true';
}
if ( isset( $item->current ) && $item->current ) {
$atts['class'] .= ' active';
}
return$atts;
}
}

Full control (override properties and methods)

class Custom_Walker extendsThemePlate\NavWalker {
publicconstFALLBACK = array(
'Please add',
'some menu',
'items here',
);
publicfunctionsubmenu_css_class( array$classes, stdClass$args, int$depth ): array {
if ( ! $args->walkerinstanceof$this ) {
return$classes;
}
$classes[] = 'sub-' . $depth;
return$classes;
}
publicfunctioncss_class( array$classes, WP_Post$menu_item, stdClass$args, int$depth ): array {
if ( ! $args->walkerinstanceof$this ) {
return$classes;
}
if ( '_blank' === $menu_item->target ) {
$classes[] = 'external';
}
return$classes;
}
publicfunctionitem_id( string$menu_id, WP_Post$menu_item, stdClass$args, int$depth ): string {
if ( ! $args->walkerinstanceof$this ) {
return$menu_id;
}
if ( 10 === $menu_item->ID ) {
$menu_id = 'i-ten';
}
return$menu_id;
}
publicfunctionlink_attributes( array$atts, WP_Post$menu_item, stdClass$args, int$depth ): array {
if ( ! $args->walkerinstanceof$this ) {
return$atts;
}
if ( in_array( 'icon', $menu_item->classes, true ) ) {
$atts['aria-hidden'] = true;
}
return$atts;
}
}

About

A complete markup cleaner

Topics

Resources

Stars

1 star

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages