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' );
} );
class Clean_Navbar extends ThemePlate\NavWalker {
public array $classes = array(
'sub-menu' => 'sub-menu-list',
'has-sub' => 'has-children',
'active' => 'current-item',
'item' => 'menu-item',
'depth' => 'level-',
);
}
class Boostrap_Navbar extends ThemePlate\NavWalker {
public array $classes = array(
'sub-menu' => 'dropdown-menu',
'has-sub' => 'dropdown',
'active' => '',
'item' => 'nav-item',
'depth' => '',
);
public function attributes( $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;
}
}
class Custom_Walker extends ThemePlate\NavWalker {
public const FALLBACK = array(
'Please add',
'some menu',
'items here',
);
public function submenu_css_class( array $classes, stdClass $args, int $depth ): array {
if ( ! $args->walker instanceof $this ) {
return $classes;
}
$classes[] = 'sub-' . $depth;
return $classes;
}
public function css_class( array $classes, WP_Post $menu_item, stdClass $args, int $depth ): array {
if ( ! $args->walker instanceof $this ) {
return $classes;
}
if ( '_blank' === $menu_item->target ) {
$classes[] = 'external';
}
return $classes;
}
public function item_id( string $menu_id, WP_Post $menu_item, stdClass $args, int $depth ): string {
if ( ! $args->walker instanceof $this ) {
return $menu_id;
}
if ( 10 === $menu_item->ID ) {
$menu_id = 'i-ten';
}
return $menu_id;
}
public function link_attributes( array $atts, WP_Post $menu_item, stdClass $args, int $depth ): array {
if ( ! $args->walker instanceof $this ) {
return $atts;
}
if ( in_array( 'icon', $menu_item->classes, true ) ) {
$atts['aria-hidden'] = true;
}
return $atts;
}
}