Je veux ajouter l'id de l'élément parent dans un conteneur div d'éléments enfants. Comment puis je faire ça? Voici mon code:
<?php
public function start_lvl( &$output, $depth = 0, $args = array() ) {
$indent = str_repeat( "\t", $depth );
$output .= "\n$indent<ul id=\"Here I want to tell wordpress to put the ID of parent element\" class=\"collapse\">\n";
}
Vous ne disposez pas des données nécessaires dans la méthode start_lvl()
pour le faire. Ces données sont disponibles dans la méthode start_el()
dans la variable $item
. Vous devrez donc trouver un moyen de les transmettre:
class my_extended_walker extends Walker_Nav_Menu {
var $prnt = 0;
var $pdepth = false;
public function start_lvl( &$output, $depth = 0, $args = array() ) {
$id = '';
if (!empty($this->prnt)) {
$id = 'id="prnt-'.$this->prnt.'"';
}
$indent = str_repeat( "\t", $depth );
$output .= "\n$indent<ul $id class=\"collapse\">\n";
}
public function start_el( &$output, $item, $depth = 0, $args = array(), $id = 0 ) {
if ($this->pdepth !== $depth) {
$this->prnt = $item->ID;
$this->pdepth = $depth;
} else {
$this->prnt = $this->pdepth = 0;
}
parent::start_el($output,$item,$depth,$args,$id);
}
}
// testing
wp_nav_menu(
array(
'walker'=>new my_extended_walker(),
'menu' => 'mymenu'
)
);