it-swarm.com.de

Hinzufügen eines benutzerdefinierten Attributs zur Menüelementverknüpfung mithilfe von Filters

Um die Barrierefreiheit meines Themas zu erhöhen, möchte ich dem Menüelement mit der Klasse aria-current="page" das Attribut .current_page_item hinzufügen.

Ab sofort mache ich das über jQuery und benutze dabei Folgendes:

var currentitem = $( '.current_page_item > a' );
currentitem.attr( 'aria-current', 'page' );

Während dies das tut, was ich möchte, würde ich es vorziehen, dass PHP diese bestimmte Sache behandelt.

Ich weiß, dass ich dies entweder mit einer benutzerdefinierten Nav Walker-Klasse oder mit einem Filter für nav_menu_link_attributes tun kann. Leider habe ich keinen Code in der Nähe von dem gesehen, was ich tun möchte.

function my_menu_filter( $atts, $item, $args, $depth ) {
   // Select the li.current_page_item element
   // Add `aria-current="page"` to child a element
}
add_filet( 'nav_menu_link_attributes', 'my_menu_filter', 10, 3 );

Jede Hilfe beim Schreiben dieses Filters wäre dankbar.

4
Cedon

Sie können stattdessen auf die CSS-Klasse current_page_item oder auf die CSS-Klasse current-menu-item abzielen. current_page_item class ist möglicherweise nicht für alle Arten von Menüelementen vorhanden. Lesen Sie die Antwort hier um zu wissen warum.

Für welche CSS-Klasse Sie sich auch entscheiden, Sie können den CODE wie folgt verwenden, um das Attribut festzulegen:

add_filter( 'nav_menu_link_attributes', 'wpse260933_menu_atts_filter', 10, 3 );
function wpse260933_menu_atts_filter( $atts, $item, $args ) {
    if( in_array( 'current-menu-item', $item->classes ) ) {
        $atts['aria-current'] = 'page';
    }
    return $atts;
}
4
Fayaz

Sie können den Filter nav_menu_link_attributes verwenden, um dies zu erreichen:

function add_attribute_to_current_menu_item( $atts, $item, $args ) {
    // check if this item represents the current post
    if ( $item->object_id  == get_the_ID() ) 
    {
        // add the desired attributes:
        $atts['aria-current'] = 'page';
    }
    return $atts;
}
add_filter( 'nav_menu_link_attributes', 'add_attribute_to_current_menu_item', 10, 3 );

Weitere Informationen finden Sie unter nav_menu_link_attributes .

0
Yoav Kadosh